GO之認證與授權

2021-10-05 14:37:04 字數 3223 閱讀 4636

一般公司專案比較多,比較分散,但是對於都是公司的使用者來說,使用者資料一般是共享的,所以整合統一認證與授權的功能一般就必不可少,這樣可以實現乙個使用者,分配一點許可權,能訪問公司很多專案.  

一般的認證與授權方案有 oauth、分布式 session、openid 和 jwt 等.目前常用的是oauth2,其重點在於為web應用程式、桌面應用程式、移動裝置以及室內裝置的授權流程提供簡單的客戶端開發方式。它為第三方應用提供對http服務的有限訪問,既可以是資源擁有者通過授權允許第三方應用獲取http服務,也可以是第三方以自己的名義獲取訪問許可權。

1.resource owner 資源所有者,是能夠對受保護的資源授予訪問許可權的實體,可以是乙個使用者,這時會被稱為end-user。

2.resource server 資源伺服器,持有受保護的資源,允許持有訪問令牌(access token)的請求訪問受保護資源。

3.client 客戶端,持有資源所有者的授權,代表資源所有者對受保護資源進行訪問。

4.authorization server 授權伺服器,對資源所有者的授權進行認證,成功後向客戶端傳送訪問令牌。

(所有的操作都是圍繞這四種角色來開展的.)

官方有乙個流程圖:

1.client請求resource owner  來 獲取授權;

2.resource owner 同意授權,返回授權許可(authorization grant);

3.client攜帶authorization grant要求授權resource server 進行認證,並傳送乙個token令牌;

4.resource server 對client進行身份驗證,並認證authorization grant,如果有效,返回token令牌;

5.client攜帶authorization grant向resource server請求受保護資源的訪問;

6.resource server驗證token令牌,如果有效,接受訪問請求,返回受保護資源。

1.authorization code 授權碼型別

2.implicit 簡化型別(也稱為隱式型別)

3.resource owner password credentials 密碼型別

4. client credential 客戶端型別

下面主要說一下客戶端型別

具體**如下:(著重看每個方法上面的注釋,可以便於理解)

/**//(2.resource owner 同意授權,返回授權許可(authorization grant))

*/json.newencoder(w).encode(map[string]string) //實際專案中一般存到資料庫或者redis

}) /**

獲取access_token( 3.client攜帶authorization grant要求授權resource server 進行認證,並傳送乙個token令牌;

4.resource server 對client進行身份驗證,並認證authorization grant,如果有效,返回token令牌)

/**帶著access_token 訪問路徑(5.client攜帶authorization grant向resource server請求受保護資源的訪問;)

token校驗(6.resource server驗證token令牌,如果有效,接受訪問請求,返回受保護資源。)

})}//初始化oauthmanager

可以看到 沒有正確的token令牌 是不讓我們訪問的,至此,我們整個模擬流程走通了.

authorization_code — 授權碼模式(即先登入獲取code,再獲取token)

password — 密碼模式(將使用者名稱,密碼傳過去,直接獲取token)

client_credentials — 客戶端模式(無使用者,使用者向客戶端註冊,然後客戶端以自己的名義向』服務端』獲取資源)

implicit — 簡化模式(在redirect_uri 的hash傳遞token; auth客戶端執行在瀏覽器中,如js,flash)

refresh_token — 重新整理access_token

未完待續....

漫談認證與授權

認證與授權一直以來都是很多人在討論的話題,之所以想這次談一談認證和授權,主要是因為最近看到許多文章都把認證和授權混為一談,把認證方式當作是授權方式。所以想寫篇文章談談我眼中的認證與授權 什麼是認證?認證是乙個嘗試解決我是誰的問題的過程。以乙個 http 請求為例,認證就是嘗試從請求資訊中獲取使用者資...

spring security 認證與授權

1 引入 spring security 模組 org.springframework.boot groupid spring boot starter security artifactid dependency role form class form div action login meth...

FluorineFx 認證與授權

對認證與授權沒啥概念的新同學,建議先看下 net中的認證 authentication 與授權 authorization 然後再繼續。flash flex在通過fluorinefx呼叫.net中的方法時,同樣也會遇到認證與授權問題,即 是否隨便乙個阿貓阿狗都能來呼叫我的方法?或者可以理解為 呼叫我...