[认证授权] 5.OIDC(OpenId Connect)身份认证授权(扩展部分)

  • 时间:
  • 浏览:1
  • 来源:彩神大发时时彩_神彩大发时时彩官方

这是一有另一个会在html加载完毕后,通过一有另一个自动提交的form表单,把id_token,access_token,authorization_code可能你你这个 的相关数据POST到调用方指定的回调地址上。

4567这四步则是属于front-channel logout规范的一要素,OIDC服务的支持情况汇报在Discovery服务中都在对应的字段描述:

在oauth2中,中间的某种情况汇报是其默认行为,并没有通过参数来显示的控制。OIDC在保持oauth2的默认行为的基础上,增加了一有另一个名为response_mode的参数,却说 增加了某种通过form表单传递信息的最好的办法,即form_post(完正信息定义在http://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html)。OIDC服务对某种扩展的支持情况汇报体现在中间提到的Discovery服务中返回的response_modes_supported字段中:

本篇博客介绍了OIDC的发现服务,OAuth2的一有另一个扩展规范,以及OIDC管理会话的机制。至此则能不必 构成一有另一个完正的认证和退出的流程。其中有 你你这个 时需不如何注意,某种流程中用到的token是OIDC定义的IDTokenIDTokenIDToken(重要要的事情说三遍),而都在OAuth2中定义的Access Token,千万暂且混淆这两者,它们是有着本质的区别的(某种点在[认证授权] 3.基于OAuth2的认证(译)和[认证授权] 4.OIDC(OpenId Connect)身份认证授权(核心要素)中都在解释)。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意时需保留此段声明,且在文章页面明显位置给出原文连接,却说 保留追究法律责任的权利。

oidc - discovery :http://openid.net/specs/openid-connect-discovery-1_0.html

相信朋友都看得懂的,它包中有 授权的url,获取token的url,撤出 token的url,以及其对OIDC的扩展功能支持的情况汇报等等信息,这里就不再完正解释每一项了。

在上图中的2和3属于session management某种规范的一部。其中第2步中,odic的退出登录的地址是通过Discovery服务中返回的end_session_endpoint字段提供的RP的。其中还一有另一个check_session_iframe字段则是供纯前端的js应用来检查oidc的登录情况汇报用的。

在上一篇[认证授权] 4.OIDC(OpenId Connect)身份认证授权(核心要素)中解释了OIDC的核心要素的功能,即OIDC如何提供id token来用于认证。可能OIDC是一有另一个协议族,可能却说 简单的只关注其核心要素觉得是匮乏以搭建一有另一个完正的OIDC服务的。本篇则解释下OIDC中比较常用的十好多个 相关扩展协议,能不必 说是搭建OIDC服务必备的十好多个 扩展协议(在上一篇中有 提到这十好多个 协议规范):

当reponse_mode设置为form_post的后后,OIDC则会返回如下的信息:

笔者基于IdentityServer3和IdentitySever4(两者都在基于OIDC的一有另一个.NET版本的开源实现)写的一有另一个集成SSO,API访问授权控制,QQ联合登陆(作为OP)的demo:https://github.com/linianhui/oidc.example 。

综合上篇提到的idtoken和前面的discovery服务以及针对oauth2的扩展,则能不必 让OIDC服务的RP完成用户认证的过程。没有如何主动的撤出 某种认证呢(也却说 朋友常说的退出登录)?总结来说却说 其认证的会话管理,OIDC单独定义了八个独立的规范来完成这件事情:

至此OIDC是支持某种类型的response_type的,不但没有,OIDC还允许了能不必 组合这某种类型,即在一有另一个response_type中中有 多个值(空格分隔)。比如当参数是却说 的后后 response_type=id_token token ,OIDC服务就会把access_token和id_token一并给到调用方。OIDC对什么类型的支持情况汇报体现在中间提到的Discovery服务中返回的response_types_supported字段中:

在oauth2的隐式授权流程中,当response_type设置为token的后后,oauth2的授权服务会直接把access_token通过url的fragment要素传递给调用方,比如却说 “http://client.lnh.dev/oauth2-callback#access_token=2YotnFZFEjr1zCsicMWpAA&state=xyz&expires_in=31500”;

oauth2 - multiple-response-types :http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html

oidc - session-menagement :http://openid.net/specs/openid-connect-session-1_0.html

oidc : http://openid.net/connect/

oidc - front-channel-logout :http://openid.net/specs/openid-connect-frontchannel-1_0.html

4567某种要素中重点有一有另一个信息:

在oauth2的授权码流程中,当response_type设置为code的后后,oauth2的授权服务会把authorization_code通过url的query要素传递给调用方,比如却说 “https://client.lnh.dev/oauth2-callback?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz”。

oauth2 - form-post-response-mode :http://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html

在本系列的第一篇博客[认证授权] 1.OAuth2授权中解释OAuth2的授权请求的后后,其请求参数中一有另一个 response_type 的参数,其允许的值有 code 和 token 一有另一个,在某种有另一个的基础上,OIDC增加了一有另一个新值 id_token (完正信息定义在http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html):

顾名思义,Discovery定义了一有另一个服务发现的规范,它定义了一有另一个api( /.well-known/openid-configuration ),某种api返回一有另一个json数据形态,其中中有 了你你这个 OIDC中提供的服务以及其支持情况汇报的描述信息,却说 能不必 使得oidc服务的RP能不必 不再硬编码OIDC服务接口信息。某种api返回的示例信息如下(这中间却说 一要素,更完正的信息在官方的规范中有 完正的描述和解释说明:http://openid.net/specs/openid-connect-discovery-1_0.html):

其中Session Management是OIDC服务自身管理会话的机制;Back-Channel Logout则是定义在纯后端服务之间的某种撤出 机制,应用场景不要 ,这里却说 完正解释了。这里重点关注一下Front-Channel Logout某种规范(http://openid.net/specs/openid-connect-frontchannel-1_0.html),它的使用最为广泛,其工作的具体的流程如下(结合Session Management规范)