【问题标题】:Windows Identity Foundation STS: other types of requests?Windows Identity Foundation STS:其他类型的请求?
【发布时间】:2023-03-29 22:17:01
【问题描述】:

我正在使用 WIF。我开发了一个运行良好的 STS。 STS 本身执行登录(基本上使用 Microsoft MVC 附带的预滚动代码)。到目前为止,我们有两个可以很好地使用加密身份 cookie 的依赖方。事情是这样的:因为所有代码都在 STS 中,所以我希望 STS 还可以执行其他功能,例如注册新用户、更改密码等。所有这些预卷的东西。但是,登录后,对 STS 中路由的任何请求(例如,帐户/注册甚至帐户/登录)都会失败,并显示“密钥在指定状态下无效”。我花了很多时间,我有两个工作的 RP 可以复制,试图配置这个东西来解密 cookie。我的结论是它不是配置。我想也许 STS 只会响应身份请求。奇怪的是,这一切都适用于 IIS express(在我的笔记本电脑上),但在 IIS 上会出现上述错误。那么首先想到的是证书保护。但是,如果配置错误,您甚至无法登录,所以我知道 STS 可以访问证书。抱歉,这有点含糊,但我希望有人有好的想法或领域知识。非常感谢-

【问题讨论】:

    标签: certificate wif claims-based-identity windows-identity


    【解决方案1】:

    您可以确保 wif 为 sts 和每个 rp 使用单独的 cookie,方法是在每个站点的设置中对它们进行不同的命名(即 stsauth、rp1auth、rp2auth) 您可以在应用程序启动时在每个站点的 ChunkedCookiedHandler 对象上显式设置名称。

    var chunkedCookieHandler = new ChunkedCookieHandler {
     RequireSsl = false, 
     Name = "stsauth", 
     Domain = domain, 
     PersistentSessionLifetime = new TimeSpan(0, 0, 30, 0)};
    

    查看here获取完整代码:

    【讨论】:

      【解决方案2】:

      标准 STS 只关心登录和注销。然而,正如许多人所了解的那样,还有许多其他流程与“用户”有关。有更改密码、丢失密码、更改电子邮件(实际上更改任何声明)、刷新密码、尝试登录、注册、在 Facebook 注册……。没有标准的处理方式。 我们通过扩展可以发送到 STS 的“操作”解决了这个问题。我们允许 RP 直接使用总共 20 个操作,而不是 signin1.0 和 signout 1.0。
      您的 STS 应该有自己的 cookie。它不应该与依赖方之一共享 cookie。这样一来,您通常不会遇到解密或加密密钥的问题。

      【讨论】:

      • 谢谢,威利!我已将 cookie 视为在会话中,而不是在给定的应用程序中。 STS 如何拥有自己的 cookie?我重定向到 STS,在其任何代码获得控制之前,它会引发无效键错误。不知道如何询问或告诉它使用 WIF 会话以外的其他 cookie。谢谢-
      猜你喜欢
      • 2011-01-03
      • 2011-12-19
      • 2012-08-30
      • 2015-12-16
      • 1970-01-01
      • 2012-02-15
      • 2011-10-04
      • 2012-01-03
      • 2015-12-28
      相关资源
      最近更新 更多