【问题标题】:How to use SAML when one user want to impersonate another user当一个用户想冒充另一个用户时如何使用 SAML
【发布时间】:2013-01-22 21:29:43
【问题描述】:

我有以下场景:

UserA 可以访问 ApplicationA。

UserB 可以访问 ApplicationB。 ApplicationA 和 ApplicationB 都使用 ApplicationI 作为身份提供者(自定义实现)。

在 ApplicationA 中登录时,UserA 想以 UserB 的身份单点登录到 ApplicationB(假设 UserB 已将此类权限授予 UserA)。

ApplicationB 应该知道 UserA 以 UserB 的身份登录。

在这种情况下如何使用 SAML 2.0?到目前为止,我在网络上获得的有关 SAML 的任何示例都是针对单个用户在多个站点上以自己的身份尝试单点登录的,而不是针对在另一个站点上冒充另一个用户的用户。 具体来说,我试图了解在这种情况下如何将 SAML Web SSO 配置文件与 HttpBinding 一起使用。

【问题讨论】:

  • 这听起来像是一个糟糕的解决方案。为什么要让 UserA 使用 UserBs 帐户?本质上,UserA 是 UserA,并且只能这样登录。如果您解释原因,也许我们可以提出更好的解决方案
  • 单点登录是指具有一组唯一凭据的用户访问多个服务而无需为每个服务输入其凭据。你能解释一下这种要求的原因吗?
  • 这是关于呼叫中心代表的。他们可能需要对客户帐户的特殊访问权限才能查看他们报告的内容。通过 SAML 响应控制对应用程序的访问。 SAML 只是在可能具有不同安全域的应用程序之间放心传输此信息的一种方式。

标签: authentication impersonation single-sign-on saml-2.0


【解决方案1】:

在您对 Ian 的回复中回答您的问题,使用 AuthnRequest 通知 IDP 您想要模拟其他用户的一种方法是使用 AuthnRequest 的 Extensions 元素。

【讨论】:

    【解决方案2】:

    模拟并非闻所未闻的要求。 UserA 和 UserB 身份信息都可以在 SAML 响应中传递,但 AppA 和 AppB 可能有一个共同的 AuthZ 模型,这样您就不会受到一些恶意活动。

    因此,例如,AppA 将对 UserA 进行身份验证。当 UserA 想要 SSO 到 AppB 并模拟 UserB 时,AppA 将为 UserA 生成一个响应,其中 UserB 的身份在“ImpersonateUser=UserB”的属性中传递。 UserA 将是响应的主题。当 AppB(充当 SP)验证响应时,它需要确保允许 UserA 通过内部授权映射来模拟 UserB。或者,AppB 可以简单地相信 AppA 已经验证 UserA 可以模拟 UserB 并适当地创建会话。但是,这取决于 AppA 和 AppB 之间的信任关系。

    HTH, 伊恩

    【讨论】:

    • 嗨,伊恩,谢谢。这解决了如何构建 SAML 响应的问题。您能否在 SAML 请求中指定 UserA 想要模拟 UserB 的方式?在 SAMLRequest 我只能指定仅标识一个主题或主体的信息?我应该如何指明此请求是为了模拟?
    • 我建议 AuthnRequst 不是这个信息的地方。可能更好地向 IDP 进行属性查询以获取此类信息。或者,您可以提前(带外)提供此信息,而无需回电给 IDP。
    猜你喜欢
    • 2013-04-29
    • 2013-10-03
    • 2013-08-11
    • 2012-04-07
    • 1970-01-01
    • 2023-03-06
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多