理解oauth 2.0
大致流程
(a)使用者訪問客戶端,後者將前者導向認證伺服器。
(b)使用者選擇是否給予客戶端授權。
(c)假設使用者給予授權,認證伺服器將使用者導向客戶端事先指定的"重定向uri"(redirection uri),同時附上乙個授權碼。
(d)客戶端收到授權碼,附上早先的"重定向uri",向認證伺服器申請令牌。這一步是在客戶端的後台的伺服器上完成的,對使用者不可見。
(e)認證伺服器核對了授權碼和重定向uri,確認無誤後,向客戶端傳送訪問令牌(access token)和更新令牌(refresh token)。
引數含義
response_type:表示授權型別,必選項,此處的值固定為"code"
client_id:表示客戶端的id,必選項
redirect_uri:表示重定向uri,可選項
scope:表示申請的許可權範圍,可選項,本例中無
state:表示客戶端的當前狀態,可以指定任意值,認證伺服器會原封不動地返回這個值,本例中無
<dependency
>
<
groupid
>org.apache.oltu.oauth2
groupid
>
<
artifactid
>org.apache.oltu.oauth2.resourceserver
artifactid
>
<
version
>$
version
>
dependency
>
<
dependency
>
<
groupid
>org.apache.oltu.oauth2
groupid
>
<
artifactid
>org.apache.oltu.oauth2.authzserver
artifactid
>
<
version
>$
version
>
dependency
>
<
dependency
>
<
groupid
>org.apache.oltu.oauth2
groupid
>
<
artifactid
>org.apache.oltu.oauth2.client
artifactid
>
<
version
>$
version
>
dependency
>
/*** 獲取授權碼-服務端
//2.生成授權碼
string authcode = null
; string responsetype =oauthrequest.getparam(oauth.oauth_response_type);
//responsetype僅支援code和token
* 獲取訪問令牌
//2.檢查客戶端安全key是否正確
if (!lightuserresult.getclientsecret().equals(tokenrequest.getclientsecret()))
//3.檢查授權碼是否正確
string authcode =tokenrequest.getparam(oauth.oauth_code);
//檢查驗證型別,此處只檢查authorization_code型別,其他的還有password或refresh_token
if (!tokenrequest.getparam(oauth.oauth_grant_type).equals(granttype.authorization_code.tostring()))
}//4.生成訪問令牌access token
oauthissuer oauthissuer = new oauthissuerimpl(new
md5generator());
final string accesstoken =oauthissuer.accesstoken();
//將訪問令牌加入快取:accesstoken-username
redisutil.getredis().set(accesstoken, lightuserresult.getusername());
//5.生成oauth響應
new responseentity("驗證成功", httpstatus.valueof(httpservletresponse.sc_ok));
}
oauth簡單使用
理解oauth 2.0 大致流程 a 使用者訪問客戶端,後者將前者導向認證伺服器。b 使用者選擇是否給予客戶端授權。c 假設使用者給予授權,認證伺服器將使用者導向客戶端事先指定的 重定向uri redirection uri 同時附上乙個授權碼。d 客戶端收到授權碼,附上早先的 重定向uri 向認證...
OAuth系列之簡單理解OAuth 2 0(二)
oauth 2.0 是目前最流行的授權機制,用來授權第三方應用,獲取使用者資料。例如 大型的居民小區 小區有門禁系統 進入的時候需要輸入密碼,那麼問題來了 有沒有一種辦法,讓快遞員能夠自由進入小區,又不必知道小區居民的密碼,而且他的唯一許可權就是送貨,其他需要密碼的場合,他都沒有許可權?於是,需要設...
簡單介紹 Oauth2 0 原理
有兩家網際網路企業 a 和 b,其中 b 是一家提供相片雲儲存的公司。使用者可以把相片上傳到 b 上長期儲存,然後可以在不同的裝置上檢視。某一天,a 和 b 談成了一項合作 希望使用者在使用 a 時,也可以 他在 b 的相片。這個技術上要怎麼實現呢?選項一 由 b 提供乙個介面 get photos...