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 认证流
SAML HTTP POST binding
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