1

OAuth2

概念

OAuth 2.0 规范定义了一个授权(delegation)协议,OAuth2.0 不是认证协议。

OAuth解决的大部分问题在于Client和被访问的资源之间的连接上,在用户不存在的情况下,使用这种委托访问。

流程

clipboard.png

上图ABCDE这5个步骤,既是完整的获取访问令牌的一个过程,其中:

  • Client 为第三方应用程序,
  • resource owner 为资源所有者
  • user-agent 为类似浏览器的代理
  • authorization server 授权服务器
  • resource server 资源服务器

流程如下:

  • A) Client使用浏览器(User-Agent)访问Authorization server。也就是用浏览器访问一个URL,这个URL是Authorization server提供的,访问的Client需要提供(客户端标识client_id,授权范围scope,本地状态state和redirect_uri)这些参数。
  • B) Authorization server验证Client在(A)中传递的参数信息,如果无误则提供一个页面供Resource owner登陆,登陆成功后选择Client可以访问Resource server的哪些资源以及读写权限。
  • C) 在(B)无误后返回一个授权码(Authorization Code)给Client。
  • D) Client拿着(C)中获得的授权码(Authorization Code)和(客户端标识、redirect_uri等信息)作为参数,请求Authorization server提供的获取access token。
  • E) Authorization server返回access token和可选的refresh token 以及令牌有效时间等信息给Client。
  • F) client拿到access token后就可以去resources server访问resource owner的资源

OIDC

定义了一种基于OAuth2的用户身份认证

OIDC的核心在于在OAuth2的授权流程中,一并提供用户的身份认证信息(ID Token)给到第三方客户端,ID Token使用JWT格式来包装,得益于JWT(JSON Web Token)的自包含性,紧凑性以及防篡改机制,使得ID Token可以安全的传递给第三方客户端程序并且容易被验证。此外还提供了UserInfo的接口,用于获取用户的更完整的信息

流程

  1. RP发送一个认证请求给OP;
  2. OP对EU进行身份认证,然后提供授权;
  3. OP把ID Token和Access Token(需要的话)返回给RP;
  4. RP使用Access Token发送一个请求UserInfo EndPoint;
  5. UserInfo EndPoint返回EU的Claims。

术语:

  • EU:End User:一个人类用户。
  • RP:Relying Party ,用来代指OAuth2中的受信任的客户端,身份认证和授权信息的消费方;
  • OP:OpenID Provider,有能力提供EU认证的服务(比如OAuth2中的授权服务),用来为RP提供EU的身份认证信息;
  • ID Token:JWT格式的数据,包含EU身份认证的信息。
  • UserInfo Endpoint:用户信息接口(受OAuth2保护),当RP使用Access Token访问时,返回授权用户的信息,此接口必须使用HTTPS
  • AuthN & AuthZ: AuthN代表authentication AuthZ 代表authrization

clipboard.png


manshu
65 声望9 粉丝

clear is better than clever