基于oAuth2的OIDC原理 学习笔记

20次阅读

共计 1419 个字符,预计需要花费 4 分钟才能阅读完成。

OAuth2
概念
OAuth 2.0 规范定义了一个授权(delegation)协议,OAuth2.0 不是认证协议。
OAuth 解决的大部分问题在于 Client 和被访问的资源之间的连接上,在用户不存在的情况下,使用这种委托访问。
流程

上图 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 的接口,用于获取用户的更完整的信息
流程

RP 发送一个认证请求给 OP;
OP 对 EU 进行身份认证,然后提供授权;
OP 把 ID Token 和 Access Token(需要的话)返回给 RP;
RP 使用 Access Token 发送一个请求 UserInfo EndPoint;
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

正文完
 0