2021-08-08-OIDC, Oauth2.0 , SMAL 的合而不同

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

名词释义

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

关键角色定义比较

RoleOAuthOIDCSAML
End UserResource OwnerEnd UserEnd User
ApplicationClientRelying Party (RP)Service Provider (SP)
Identity ProviderAuthorization Server (AS)OpenID Provider (OP)Identity Provider (IDP)
Web BrowserUser-AgentUser-AgentUser-Agent

协议流程比较

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

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

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

SAML工件流是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 FlowImplementationBackend RequestPKCE
Authorization Code FlowRequiredToken RequestYes
SAML HTTP POSTRequired
Implicit FlowOptional
SAML ArtifactOptionalArtifact Resolve Request

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值