SAML服务提供商如何在初始身份验证后(vs OIDC)理解身份?

时间:2019-07-30 13:17:18

标签: session saml saml-2.0 openid-connect opensaml

我正在寻求使用OpenSAML为第三方应用程序实现一个插件,该插件可使该应用程序被视为SAML服务提供商,以便可以将其集成到AWS SSO中。 / p>

下图描述了服务提供商(SP)和身份提供商(IdP)使用HTTP Artifact绑定(取自here)时的SAML身份验证过程:

SAML Authentication Flow

在初始身份验证之后,SP将受保护的资源返回给用户。我的问题与后续处理受保护资源的请求有关。

使用OIDC,浏览器将收到一个令牌,该令牌将被发送到SP以进行后续请求。 SP可以检查令牌并确认其完整性(假设已签名)和有效性,而无需进一步调用IdP来重新认证最终用户。

使用SAML,我如何获得相同的效果?我不必重复拨打IdP来检查身份吗?

我想我可以使用会话,但是我不明白如何确保在客户端中不会篡改此类信息(即SP如何不必依赖于客户端提供的信息?)。 SAML是否具有某种对用户安全的令牌概念(HTTP Artifact绑定明确限制了用户看不到IdP的响应)?

1 个答案:

答案 0 :(得分:1)

规范中未定义最后一步之后发生的情况。您可以说它正式在SAML协议之外。 SP甚至提供资源的最后一个协议形式化的步骤,本质上也是“自己动手做”:

第3.4.5节(HTTP重定向绑定):

  

收到SAML响应后,SAML请求者将返回一个   对用户代理的任意HTTP响应

第3.5节(HTTP-POST绑定):

  

收到SAML响应后,SAML请求者将返回一个   对用户代理的任意HTTP响应

第3.6节(HTTP工件绑定):

  

[您现在可能已经猜到了]

在最后一步中,大多数SP都会在客户端上放置一个或多个cookie。这些Cookie之一将包含会话ID或更通用的指针,当发送回SP时可用于定位会话。通过让SP咨询此服务器端会话,可以继续对SP的后续资源“授权”请求。会话通常将为此用户/客户端保存(已认证的)安全上下文。

例如Shibboleth(建立在OpenSAML之上)does so。 Cookie的内容取决于SP。通过令牌进行基于令牌的身份验证是有争议的本地存储比cookie更安全。 pros/cons to both options的使用案例/上下文/技术堆栈特有许多因素会影响风险评估和相关威胁模型。

注意:AWS SSO不支持Artifact绑定。