1

SAML 请求是在需要进行身份验证时每次都发送到 IdP,还是首先检查存储在浏览器 cookie 中的会话并在找到会话时自动进行身份验证?

4

2 回答 2

0

通常,当用户第一次通过该 SP 的身份验证时,SP 会存储一个会话。如果 SP 需要对用户进行身份验证,它首先会查找本地会话。但是,如果用户在一个 SP 有一个会话,然后尝试访问第二个 SP 的资源,则该 SP 将没有来自第一个 SP 的本地会话,并且需要向 IDP 发送 authnrequest。

据我记得,这在 SAML 规范中没有规定,但它通常是如何完成的。

于 2018-01-19T07:50:30.490 回答
0

要访问 Web 应用程序 (SP),您通常需要向它提供一些东西以证明您有权访问它。通常,此权利是用户名/密码组合。一旦 SP 验证了您的权利(可能将用户名/密码与 db 进行比较),它会根据 SP 的策略为您生成一个时间有限的会话。

当您使用 访问 SP 时SAML,您没有用户名/密码。在这种情况下,您的权利来自您的 IdP 发布给 SP 的属性。一旦 SP 验证了您的属性,它就会生成您的会话,这与您从用户名/密码验证中获得的会话类型完全相同。

SP 可以通过多种方式再次向 IdP 询问属性:

  • SP 的本机会话到期,您的SAML属性已到期(他们有时间生存)。
  • 您的SAML属性已过期。在高安全性 SP 中可能就是这种情况,您可能只有一个小时的许可。您的SAML属性可能只有一小时的 TTL。然后,SP 会向您的 IdP 询问您的属性以刷新您的权利。

如果 SP 的本机会话过期但您的SAML属性仍然有效,它可能会选择不询问您的 IdP,而是根据您当前的SAML属性创建一个新会话。这完全取决于 SP 的安全策略。

如果您去另一个 SP,您通常不必再次在您的 IdP 进行身份验证,因为您的 IdP 可能会在第一个 SP 登录后为您提供会话,并且只会将您的属性释放给第二个 SP。

于 2018-01-19T15:41:38.787 回答