【问题标题】:Reading relaystate from a SamlResponse从 SamlResponse 读取中继状态
【发布时间】:2018-10-24 11:40:35
【问题描述】:

我们正在使用 SustainSys.Saml2 和 IdentityServer4。

我们在这个问题How to maintain returnurl after receiving SAML response from OneLogin中概述了以下工作流程

当我们在被重定向到 OneLogin 以验证我们的用户并返回 SamlResponse 之前发出 ChallengeAsync 时,我们看到我们的 AuthenticationProperties 被传递给 SustatinSys 库代码并且它具有 relayData 和 returnPath 集但是当 OneLogin 回发到我们的relaystate 不是我们指定的returnurl/relayData。我们相信它是从这里生成的值 https://github.com/Sustainsys/Saml2/blob/master/Sustainsys.Saml2/RelayStateGenerator.cs 作为 SamlAuthenticationRequest 创建的一部分。

应该将我们创建的中继数据传递给 SamlAuthenticationRequest 以便我们可以在成功登录后作为 SamlResponse 的一部分读取它,还是我们做错了什么需要在其他地方设置一些选项以便我们可以读取中继状态?

【问题讨论】:

    标签: identityserver4 sustainsys-saml2


    【解决方案1】:

    在调用 Idp 期间,您传递给 AuthenticationProperties 的 relayData 和 returnPath 保存在加密的 cookie 中。实际 Saml2 交换中的 RelayState 是一个随机字符串,也就是 cookie 的名称。在处理 Saml 响应时,会读取 cookie 的内容并恢复 AuthenticationProperties(包括 ReturnUrl)。

    【讨论】:

    • 我们正在手动处理响应,但后来意识到我们应该使用您提供的 Saml2Handler。谢谢
    • 是的,确实推荐使用处理程序。直接使用 Commands API 是一种应该避免的高级场景。这主要是作为平台特定模块的内部 API。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2017-06-09
    • 2019-08-16
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多