日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

原文章 作者:Aaron Parecki

譯者:MoCha => 摩卡先生

前言

授權(quán)碼模式大概是我們所最常見(jiàn)的OAuth 2.0 授權(quán)模式。當(dāng)用戶(hù)授權(quán)給App時(shí),授權(quán)碼模式就會(huì)在網(wǎng)頁(yè)應(yīng)用和原生apps中使用到。

本文章是本系列文章中的第一部分,我們將探討常用的OAuth 2.0 授權(quán)模式。如果你想在我們深入之前了解更多有關(guān)OAuth 2.0的知識(shí),請(qǐng)查看What the Heck is OAuth?,這篇文章同樣能夠在Okta開(kāi)發(fā)者博客上找到。

What is an OAuth 2.0 Grant Type? 什么是 OAuth 2.0 授權(quán)模式?

在OAuth 2.0 標(biāo)準(zhǔn)中,“授權(quán)模式”指的是一種為應(yīng)用程序獲取access token的方式。

OAuth 2.0 定義了好幾種授權(quán)模式,其中包括“授權(quán)碼模式”。OAuth 2.0 的擴(kuò)展同樣可以定義一些新的授權(quán)模式。

每一種授權(quán)模式在對(duì)應(yīng)的一些特殊用例中都有著最佳實(shí)踐,例如:web app,原生 app,一些無(wú)法啟動(dòng)web瀏覽器的設(shè)備,或者是服務(wù)器端到服務(wù)器端的應(yīng)用程序。

The Authorization Code Flow 授權(quán)碼模式的流程

授權(quán)碼授權(quán)模式被用于web應(yīng)用以及手機(jī)app中。與大多數(shù)授權(quán)模式不同,授權(quán)碼模式會(huì)在一開(kāi)始就請(qǐng)求應(yīng)用去啟動(dòng)瀏覽器來(lái)進(jìn)行一系列操作。更深入點(diǎn)說(shuō),授權(quán)碼模式的流程有以下步驟:

  • 應(yīng)用程序打開(kāi)瀏覽器,將用戶(hù)連接到OAuth的服務(wù)端中
  • 用戶(hù)會(huì)看到授權(quán)提示以及是否同意應(yīng)用的請(qǐng)求
  • 用戶(hù)被重定向回到應(yīng)用程序中,同時(shí)在請(qǐng)求欄中攜帶著授權(quán)碼字符串
  • 應(yīng)用程序?yàn)榱双@取access token而進(jìn)行交換授權(quán)碼的操作

Get the User’s Permission 獲取用戶(hù)權(quán)限

OAuth 旨在讓用戶(hù)能夠授予應(yīng)用程序特定的受限訪(fǎng)問(wèn)權(quán)限。應(yīng)用程序首先會(huì)確定需要請(qǐng)求的權(quán)限,之后會(huì)將用戶(hù)傳送至對(duì)應(yīng)的瀏覽器中以獲得他們的許可。為了開(kāi)啟授權(quán)流程,應(yīng)用程序會(huì)構(gòu)造類(lèi)似以下格式的URL,并且通過(guò)瀏覽器進(jìn)行訪(fǎng)問(wèn)。

https://authorization-server.com/auth
 ?response_type=code
 &client_id=29352915982374239857
 &redirect_uri=https%3A%2F%2Fexample-app.com%2Fcallback
 &scope=create+delete
 &state=xcoiv98y2kd22vusuye3kch

下面是有關(guān)請(qǐng)求參數(shù)的說(shuō)明:

  • response_type=code告訴授權(quán)服務(wù)器,應(yīng)用正在初始化授權(quán)流程
  • client_id 應(yīng)用程序的公共標(biāo)識(shí),將在開(kāi)發(fā)者首次注冊(cè)應(yīng)用時(shí)獲得
  • redirect_uri 告訴授權(quán)服務(wù)器當(dāng)用戶(hù)同意應(yīng)用的請(qǐng)求后應(yīng)該將用戶(hù)返回到何處
  • scope 一個(gè)或多個(gè)以空格分隔的字符串,用于指示應(yīng)用程序請(qǐng)求的權(quán)限。在使用具體的OAuth API時(shí),我們將指定所支持作用域。
  • state 應(yīng)用程序?qū)⑸梢粋€(gè)隨機(jī)字符串并包含在請(qǐng)求中,我們應(yīng)該對(duì)用戶(hù)授權(quán)應(yīng)用程序后是否返回相同的值進(jìn)行檢查。這是為了防止 CSRF attacks.

當(dāng)用戶(hù)訪(fǎng)問(wèn)此URL時(shí),授權(quán)服務(wù)器會(huì)提示用戶(hù),詢(xún)問(wèn)他們是否要授權(quán)此應(yīng)用程序的請(qǐng)求。

什么是 OAuth 2.0 授權(quán)碼模式?

 

Redirect Back to the Application 重定向回到應(yīng)用程序

如果用戶(hù)同意授權(quán),那么授權(quán)服務(wù)器將重定向回到指定的redirect_uri ,并且攜帶著code以及state

例如,用戶(hù)將重定向回到以下URL:

https://example-app.com/redirect
 ?code=g0ZGZmNjVmOWIjNTk2NTk4ZTYyZGI3
 &state=xcoiv98y2kd22vusuye3kch

state的值將會(huì)和應(yīng)用程序剛初始請(qǐng)求時(shí)設(shè)置的一樣。但應(yīng)用程序應(yīng)當(dāng)檢查重定向中的state是否與最初設(shè)置的state一致

code是通過(guò)授權(quán)服務(wù)器生成的授權(quán)碼,授權(quán)碼相對(duì)來(lái)說(shuō)存活時(shí)間是短暫的,在依賴(lài)OAuth服務(wù)的情況下,一般存活在1~10分鐘。

Exchange the Authorization Code for an Access Token 為了獲取Access Token 進(jìn)行的授權(quán)碼交換

我們即將要結(jié)束授權(quán)的流程啦?,F(xiàn)在應(yīng)用程序有了授權(quán)碼,我們可以用它來(lái)獲取Access Token。

應(yīng)用程序?qū)?huì)通過(guò)以下步驟發(fā)起POST請(qǐng)求到服務(wù)令牌終端:

  • grant_type=authorization_code 告訴令牌終端,應(yīng)用程序正在使用授權(quán)碼模式。
  • code 重定向回來(lái)后,應(yīng)用程序所攜帶的授權(quán)碼。
  • redirect_uri 與請(qǐng)求授權(quán)碼時(shí)設(shè)置的重定向URL一樣。有些API不需要該請(qǐng)求參數(shù),所以在使用之前應(yīng)當(dāng)仔細(xì)查閱想要使用API的文檔。
  • client_id 應(yīng)用程序的客戶(hù)端ID。
  • client_secret 應(yīng)用程序的客戶(hù)端secret。確保獲取到access token是來(lái)自該應(yīng)用程序的,而不是那些有可能攔截授權(quán)碼的潛藏攻擊者。

令牌終端將驗(yàn)證請(qǐng)求中的所有參數(shù),確保授權(quán)碼不會(huì)過(guò)期以及客戶(hù)端ID和客戶(hù)端secret是匹配的。如果一切的檢查順利,沒(méi)有問(wèn)題,那么將會(huì)生成一個(gè)access token響應(yīng)回去!

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
 "access_token":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3",
 "token_type":"bearer",
 "expires_in":3600,
 "refresh_token":"IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk",
 "scope":"create delete"
}

這就是完整的授權(quán)流程啦!現(xiàn)在應(yīng)用程序有了access token,那么就可以調(diào)用相關(guān)API進(jìn)行請(qǐng)求啦。

When to use the Authorization Code Flow 什么時(shí)候該使用授權(quán)碼

在使用web應(yīng)用或者是手機(jī)應(yīng)用中,授權(quán)碼模式將是最好的選擇。由于授權(quán)碼模式在獲取access token上額外進(jìn)行了交換授權(quán)碼的步驟,因此提供了一種隱式授權(quán)模式所沒(méi)有的安全層。

如果你正在手機(jī)應(yīng)用上使用授權(quán)碼模式,或者無(wú)法存儲(chǔ)客戶(hù)端secret的其他任何類(lèi)型應(yīng)用程序,那么你應(yīng)該使用PKCE extension ,它會(huì)提供可能攔截授權(quán)碼的其他攻擊的保護(hù)。

交換授權(quán)碼的步驟確保攻擊者無(wú)法攔截access token,這是因?yàn)閍ccess token總是通過(guò)應(yīng)用程序與OAuth服務(wù)器之間的安全反向通道傳輸。

分享到:
標(biāo)簽:OAuth
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定