OIDC, Oauth2.0 , SMAL 的合而不同

Posted JAI身份云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OIDC, Oauth2.0 , SMAL 的合而不同相关的知识,希望对你有一定的参考价值。


名词释义

协议 描述
SAML 2.0 Security Assertion Markup Language
OAuth 2.0 Web Authorization Protocol
OpenID Connect 1.0 Simple identity layer on top of OAuth 2.0

关键对象定义比较

Role OAuth OIDC SAML
End User Resource Owner End User End User
Application Client Relying Party (RP) Service Provider (SP)
Identity Provider Authorization Server (AS) OpenID Provider (OP) Identity Provider (IDP)
Web Browser User-Agent User-Agent User-Agent

协议流程比较

授权代码流和SAML HTTP POST绑定是各自协议中最常见的两种流。

从下图可以看出,授权代码流的步骤3有一个额外的后端请求,即令牌请求。

隐式流删除了令牌请求步骤,因此实际上与SAML HTTP POST绑定相同。

SAML Artifact flow 是SAML的一个不太为人所知的变体,非常类似于授权代码流。

关键步骤

1.最终用户导航到Web应用程序的受保护资源。Web应用程序生成身份验证请求并将浏览器重定向到身份提供程序2.身份提供者处理身份验证请求,然后识别用户并在将响应提交回web应用程序之前请求用户授权。3.对于授权码流,Web应用程序接收一个必须交换为令牌的引用句柄。对于隐式和HTTP POST流,应用程序直接接收令牌。由于令牌是通过Web浏览器发送的,因此令牌大小通常存在技术限制。4.最后,Web应用程序根据令牌表示的声明与最终用户发起经过身份验证的会话。

OAuth & OIDC 认证流

OIDC, Oauth2.0 , SMAL 的合而不同

SAML HTTP POST binding

OIDC, Oauth2.0 , SMAL 的合而不同

Implicit Flow 隐匿授权

SAML Artifact binding

总结

流程看起来都非常相似。然而在消息和请求格式上存在显著差异:SAML基于XML,而OAuth基于HTTP请求参数和JSON消息。

许多人认为基于XML的SAML协议,使用起来比 OAuth 更困难。幸运的是,使用 JAI 可视化的集成工具,这种差异变得无关紧要。

Protocol Flow Implementation Backend Request PKCE
Authorization Code Flow Required Token Request Yes
SAML HTTP POST Required
Implicit Flow Optional
SAML Artifact Optional Artifact Resolve Request

两个协议都存在相同类型的流,但是具体实现要求包含的内容有所不同。

带有PKCE的授权代码流是这些流中最安全、最通用的。PKCE实现了SAML或隐式流中不可用的安全功能。由于实现授权代码流需要所有符合OAuth和OIDC的身份提供程序,而且消息大小实际上是无限的,因此它是最好的通用替代方案。

今天就介绍到这里,下一篇介绍不同 token 的区别。


以上是关于OIDC, Oauth2.0 , SMAL 的合而不同的主要内容,如果未能解决你的问题,请参考以下文章

OAuth2.0/OIDC 中的 grant_type 与 response_type

OAuth 2.0只是授权协议,OIDC才是认证授权协议

OAuth2.0和OIDC详解

授权与认证OAuth 2.0 和 OIDC 的异同点

是否有基于 OIDC 的基于 IDaaS 的社交登录的标准模式?

OAuth,JWT ,OIDC你们搞得我好乱啊