Cookies IdentityServer3-Cookie路径问题

Cookies IdentityServer3-Cookie路径问题,cookies,owin,identityserver3,katana,ws-federation,Cookies,Owin,Identityserver3,Katana,Ws Federation,我的问题是关于IIS托管的IdentityServer 3 SSO应用程序使用OWIN WS-Federation中间件生成的cookie的问题。我们遇到了间歇性生产问题,导致无法登录(和注销)。虽然我已经找到了原因,但我相信这使我们的SSO容易受到攻击 IIS安装程序: https://www.example.com-父应用程序(客户端应用程序) 登录-子应用程序(使用OWIN WS联合中间件的IDS3应用程序) (注意:存在其他客户端应用程序,但它们位于其他服务器上) 我们希望从这样

我的问题是关于IIS托管的IdentityServer 3 SSO应用程序使用OWIN WS-Federation中间件生成的cookie的问题。我们遇到了间歇性生产问题,导致无法登录(和注销)。虽然我已经找到了原因,但我相信这使我们的SSO容易受到攻击

IIS安装程序:

  • https://www.example.com
    -父应用程序(客户端应用程序)
    • 登录
      -子应用程序(使用OWIN WS联合中间件的IDS3应用程序)
(注意:存在其他客户端应用程序,但它们位于其他服务器上)

我们希望从这样的设置中看到的是Identity Server的cookie(idsrv、idsrv.external、idsrv.partial和idsrv.session)应该指向“/login/core”。相反,我们看到一些cookie(特别是idsrv、idsrv.external和idsrv.partial)指向“/Login/core”的路径。我终于能够追踪到健康检查的问题,该检查在Prod中每30秒ping一次我们的应用程序,它设置了错误的外壳(“/Login/core”)

当运行状况检查是我们的SSO应用程序收到的初始请求时,idsrv、idsrv.external和idsrv.partial cookies在所有进一步的请求(甚至来自其他客户端、浏览器、机器等)上都将设置为不正确的“/Login/core”路径,直到应用程序重新启动

这意味着在WS-Federation登录重定向期间,由于cookie路径不正确,所有身份验证信息都会丢失。尽管在日志中看到用户已成功通过身份验证,但用户未登录(subject.Identity.IsAuthenticated返回false),并且再次呈现登录页面,且不会显示错误消息

奇怪的是,即使在这种情况下,idsrv.session&SignInMessage cookies仍然设置为正确的路径,我认为这是因为它们是在身份验证过程中的不同点创建的。如果来自任何客户端应用程序的请求首先命中SSO应用程序,则会为所有cookie设置正确的“/login/core”路径


一旦我能够找出问题的根本原因,就很容易解决了。我担心的是,这是一个非常明显的漏洞,如果有人通过应用程序回收事件或后期部署来确定错误的请求时间,那么他们可能会有意或无意(如我们的情况)关闭我们的SSO应用程序。我很好奇,这是否是IIS中托管的子应用程序的限制导致的,或者是否有其他原因导致这种情况发生。如果您能深入了解如何插入漏洞(除了作为兄弟应用程序托管),我们将不胜感激。

我也有同样的问题,我使用的是python3.4和django1.9.6,cookie是用不同的路径保存的,但是当我只想获取全局路径cookie时,有人能够使用自定义路径吗?