问题
我很确定我的问题与IdentityServer的功能没有直接关系,但是我希望你们能给我一些建议来帮助解决下一个问题。在我们的环境中,我们有几个在不同域/机器上运行的Web应用程序,它们使用IdentityServer作为身份验证机构。在身份验证和授权方面,一切都运行良好,SSO用户可以访问所有应用程序。
这是一个问题:
用户第一次导航,比方说,需要身份验证的WebApp1(http://domain1/WebApp1) - 用户自动重定向到IdSrv登录。用户输入凭据,然后重定向回WebApp1。一切都运行良好,基于“.AspNet.Cookies”-cookie创建,用户可以在WebApp1资源中无需担心地进行导航。在用户导航到同一域(http://domain1/WebApp2)上的WebApp2之后。在导航期间,应用程序向IdSrv进行往返,确保用户已通过身份验证并返回到WebApp2(无需新登录) - 这没关系。但是,如果用户想要返回WebApp1,则会发生到IdSrv的新往返,这就是我想要避免的!每次用户在应用程序之间切换时都会发生这种情况。
有没有办法阻止相同/不同域上的多个WebApplication之间的每个导航上的IdSrv往返?我找到的一个解决方法是为每个应用程序使用不同的ASP.NET Cookie名称,但这会使身份注销方式更加复杂。
还得到@brockallen的建议,为每个单独的webapp使用不同的cookie名称,但单点注销呢?一旦注销WebApp1,WebApp2仍然会保持登录状态,直到IdScrv的新往返任务或cookie exp