【问题标题】:How can I refresh SAML assertion information from an WSO2 identity server?如何从 WSO2 身份服务器刷新 SAML 断言信息?
【发布时间】:2013-01-23 01:40:38
【问题描述】:

我正在为 Web 应用程序构建基于 SAML 2.0 的身份验证。身份验证是针对 WSO2 身份服务器 (WSO2-IS) 完成的。我已经设法使用 HTTP 重定向来进行实际的身份验证。但是现在我在尝试从身份服务器“刷新”身份验证信息时遇到问题。

问题在于 WSO2-IS 返回的断言只有 5 分钟的生命周期。因此,基于此,我应该每 5 分钟从 WSO2-IS 获得一个新断言。但是,除了进行另一轮重定向之外,我没有发现其他方法可以针对 WSO2-IS 执行此操作。每五分钟将用户重定向到其他地方对用户不是很友好。

SAML 2.0 指定了一个 AuthnQuery 请求,该请求应该使用 SOAP over HTTP 来完成。如果我理解正确,AuthnQuery 正是我为用户重新请求断言信息所需要的,但对我来说,WSO2-IS 似乎不支持这个请求。

那么,问题是,我如何能够刷新(或重新请求)来自 WSO2 身份服务器的断言信息,而无需将用户重定向到他们当前正在访问的页面之外?

【问题讨论】:

    标签: wso2 saml-2.0 wso2is assertion


    【解决方案1】:

    我不确定你是否可以使用它。这是来自 SAML 规范

    message 元素用于查询“What 包含身份验证语句的断言可用于此 主题?”一个成功的将包含一个或多个断言 包含身份验证语句。

    消息必须 不得用作使用凭据进行新身份验证的请求 请求中提供。是陈述请求 关于先前交互中发生的身份验证行为 在指定的主题和认证机构之间。

    您说的是断言上的 NotOnOrAfter 约束,对吧? 据我了解,这只是为了当您不再信任该消息时。我您在那之前读过它,您可以认为用户已通过身份验证。这通常是为了防止重放攻击。

    【讨论】:

    • 是的,我说的是 NotOnOrAfter 约束。根据规范,它定义了断言的有效性。我理解的方式是,您不能相信用户在此之后得到正确的身份验证,并且需要重新进行身份验证。我在任何地方都没有找到任何其他说明的信息。但是,如果条件只是为了防止重放攻击,并且我可以自己决定信任身份验证信息的时间,那么就没有问题。
    • 当我想到它时,我认为 issueInstant 是为了重播。这很有趣。
    • 现在我有点困惑。我认为您描述断言条件的方式只是为了防止重放攻击是有道理的。我只是在规范中找不到支持文档,但我也找不到任何反对这个想法的东西。您现在是否有第二个想法?
    • 是的,我是。我不认为 N​​otOnOrAfter 是为了防止重放。但是我仍然认为您不需要在 NotOnOrAfter 启动时刷新断言。但我没有支持这一点的文件。我会试着找到一些。
    • 在谷歌应用 SSO 页面上找到了一些关于此的内容。 NOT_ON_OR_AFTER - 标识 SAML 响应被视为无效的日期和时间的时间戳。它表明这实际上是为了消息的有效性而不是用户会话。不是经验证明,而是它的东西
    【解决方案2】:

    答案可以在 Web 浏览器 SSO 配置文件 -> 使用和消息处理规则下的 SAML 配置文件规范中找到。

    上述的承载元素必须包含 包含收件人的元素 包含服务提供者的断言消费者服务的属性 URL 和一个 NotOnOrAfter 属性,用于限制在此期间的窗口 断言可以传递

    NotOnOrAfter 是必须传递消息的时间。

    您应该考虑的是AuthnStatement 中的属性SessionNotOnOrAfter(如果存在)。

    如果用于为 principal 包含一个 SessionNotOnOrAfter 属性,安全性 一旦达到这个时间,上下文应该被丢弃,除非 服务提供者通过重复重新建立主体的身份 使用此配置文件。

    SAML profile spec

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 2020-07-11
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 2017-07-17
      • 1970-01-01
      相关资源
      最近更新 更多