天天看點

OAuth2.0和Open Connect

1.Auth2.0簡介

1.1Auth2.0是一個委托協定,它可以讓那些控制資源的人允許某個應用以代表他們來通路他們控制的資源,

注意是代表這些人,而不是假冒或模仿這些人。這個應用從資源的所有者哪裡獲得授權(Authorization)和

(通路令牌)access token,随後就可以使用這個access token來通路資源。

(1)關于授權Authorization

(2)Access Token

(3)支援各種用戶端

Auth2.0授權Authorization(你能幹什麼)

OpenId Connect身份認證Authentication(你是誰)

OAuth2.0和Open Connect
OAuth2.0和Open Connect

1.2授權類型(Authorization Grant)

授權碼模式(Authorization Code) 授權伺服器 适合MVC

簡化模式(Implicit) 适合浏覽器應用,比如Anglar

密碼模式(Resource Owner Password Credentials) 資源所有者和用戶端應用之間高度信用

用戶端模式(Client Credentials)

(Device Code)

(Refresh Token)

1.3端點(Endpoint)

授權端點(Authorization Endpoint)

Token端點(令牌端點)(Token Endpoint)

OAuth2.0和Open Connect

1.4範圍(Scope)

代表資源所有者在被保護資源那裡的一些權限。

1.5Access Token

有時候就叫Token

用來通路被保護資源的憑據

代表了給用戶端頒發的授權,也就是委托給用戶端的權限

描述出Scope,有效期

1.6Refresh Token

用來擷取Access Token的憑據

用Authorization Server(授權伺服器)頒發給用戶端應用

可選

具備讓用戶端應用逐漸降低通路權限的能力

OAuth2.0和Open Connect

1.7發生錯誤時

error

error_description

error_url

state

2.OpenId Connect

OAuth2.0不是身份認證協定

什麼是什麼認證?

它可以告訴應用程式目前的使用者是誰,還有這些使用者是否正在使用你的應用程式。

它是一種安全架構,它可以告訴你使用者是他們所聲明的身份,通常呢,是通過提供

一套安全憑據(例如使用者名和密碼)給應用程式來證明這一點。

2.1身份認證VS授權

身份認證Authentication

授權Authorization

OpenId Connect基于OAuth2.0,在此之上,它添加了一些元件來提供身份認證的能力

OpenId Connect是建立在OAuth2.0協定上一個簡單的身份辨別層,OpenId Connect相容OAuth2.0 

2.2OAuth2.0與身份認證協定的角色映射

OAuth2.0和Open Connect

2.3為什麼不使用OAuth2.0裡的Access Token來解決身份認證的問題?

Access Token不含有身份認證的資訊

生命周期可能很長,使用者離開了,它仍然有效

Access Token 可能被其它用戶端借用

Access Token 不是為用戶端準備的,它對用戶端不透明,但是用戶端可以從Access Token裡得到一些使用者資訊。

Access Token的真正的目标觀衆是被保護的資源

2.4OpenId Connect

ID Token

UserInfo 端點

提供一組辨別身份的Scopes和Claims(profile,email,address,phone)

OAuth2.0和Open Connect

OpenId Connect三個流程

授權碼(Authorization Code Flow)

簡化模式(Implicit Flow)

混合流程(Hybrid Flow)