首頁>技術>

生命不止,繼續 go go go!!!

今天繼續分享golang中的認證問題,之前寫過兩篇:

一篇是關於basic認證:Go實戰–透過basic認證的http(basic authentication)

一篇是關於JWT的:Go實戰–golang中使用JWT(JSON Web Token)

這裡就介紹一下golang中使用oauth2.0.

OAuth2.0

OAuth2.0是OAuth協議的下一版本,但不向後相容OAuth 1.0即完全廢止了OAuth1.0。 OAuth 2.0關注客戶端開發者的簡易性。要麼透過組織在資源擁有者和HTTP服務商之間的被批准的互動動作代表使用者,要麼允許第三方應用代表使用者獲得訪問的許可權。同時為Web應用,桌面應用和手機,和起居室裝置提供專門的認證流程。2012年10月,OAuth 2.0協議正式釋出為RFC 6749.

在認證和授權的過程中涉及的三方包括:1、服務提供方,使用者使用服務提供方來儲存受保護的資源,如照片,影片,聯絡人列表。2、使用者,存放在服務提供方的受保護的資源的擁有者。3、客戶端,要訪問服務提供方資源的第三方應用,通常是網站,如提供照片列印服務的網站。在認證過程之前,客戶端要向服務提供者申請客戶端標識。

使用OAuth進行認證和授權的過程如下所示:

(A)使用者開啟客戶端以後,客戶端要求使用者給予授權。(B)使用者同意給予客戶端授權。(C)客戶端使用上一步獲得的授權,向認證伺服器申請令牌。(D)認證伺服器對客戶端進行認證以後,確認無誤,同意發放令牌。(E)客戶端使用令牌,向資源伺服器申請獲取資源。(F)資源伺服器確認令牌無誤,同意向客戶端開放資源

更詳細的內容,可以參考:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

package oauth2

Package oauth2 provides support for making OAuth2 authorized and authenticated HTTP requests. It can additionally grant authorization with Bearer JWT.

獲取:

go get golang.org/x/oauth21

type Config

type Config struct {    // ClientID is the application's ID.    ClientID string    // ClientSecret is the application's secret.    ClientSecret string    // Endpoint contains the resource server's token endpoint    // URLs. These are constants specific to each server and are    // often available via site-specific packages, such as    // google.Endpoint or github.Endpoint.    Endpoint Endpoint    // RedirectURL is the URL to redirect users going through    // the OAuth flow, after the resource owner's URLs.    RedirectURL string    // Scope specifies optional requested permissions.    Scopes []string}1234567891011121314151617181920

func (*Config) AuthCodeURL

func (c *Config) AuthCodeURL(state string, opts ...AuthCodeOption) string1

AuthCodeURL returns a URL to OAuth 2.0 provider’s consent page that asks for permissions for the required scopes explicitly.

func (*Config) Exchange

func (c *Config) Exchange(ctx context.Context, code string) (*Token, error)1

Exchange converts an authorization code into a token.

type Endpoint

type Endpoint struct {    AuthURL  string    TokenURL string}1234

Endpoint contains the OAuth 2.0 provider’s authorization and token endpoint URLs.

使用google賬號進行登陸驗證

1.去Google Cloud Platform,建立一個專案

2.憑據,建立憑據,選擇OAuth客戶端ID

4.記錄下客戶端ID和客戶端金鑰

編碼

瀏覽器訪問:http://localhost:8000

結果:

Content: { "id": "114512230444013345330", "email": "[email protected]", "verified_email": true, "name": "王書博", "given_name": "書博", "family_name": "王", "picture": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg", "locale": "zh-CN"}1234567891011

28
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Spring Cloud 2020.0.0-RC1 釋出