基于oAuth2的OIDC原理 学习笔记

OAuth2

概念

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

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

流程

clipboard.png

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

  • Client 为第三方应用程序,
  • resource owner 为资源全部者
  • user-agent 为相似浏览器的代理
  • authorization server 受权服务器
  • resource server 资源服务器

流程以下:ide

  • 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的用户身份认证spa

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。

术语:server

  • 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

相关文章
相关标签/搜索