如何使用Identity Server实现单点登录(SSO)?

6
我有许多使用.NET Membership和Forms Authentication的旧版.NET Framework Web应用程序。它们各自拥有自己的登录页面,但都在同一个域(例如.mycompany.com)上,共享一个ASP.NET Membership数据库并共享一个机器密钥,因此它们能够识别彼此的cookie以实现SSO;即如果您登录一个应用程序,则您已经登录了所有应用程序,退出登录也是如此。
现在,我希望所有未来的应用程序都使用通用的Identity Server作为集中身份验证机制,并开发为.NET Core。我已经准备好一个简单的Identity Server以及几种不同类型的.NET Core客户端应用程序,这些都运作得很好。我无法克服的障碍是在所有mycompany.com应用程序之间实现SSO。Brock Allen建议在这里查看客户端样例以获取灵感。
MVC OWIN Client(Implicit)示例接近我的需求。我能够将旧应用程序转换为使用OWIN cookie身份验证和OIDC,但这不是真正的SSO。当前,如果我登录app1.thirdparty.com,则会重定向到identityserver.mycompany.com进行身份验证。一旦我登录identityserver.mycompany.com,我就能够访问app1.thirdparty.com,这很棒,但我还必须对每个mycompany.com应用程序执行此相同的过程。尽管我不必每次输入凭据,因为我已经在identityserver.mycompany.com上建立了会话,但我仍然必须进入每个应用程序并单击登录按钮才能正式登录。我希望登录identityserver.mycompany.com能够启动与mycompany.com域内所有其他应用程序的SSO。同样,如果我已经登录到mycompany.com应用程序,则希望identityserver.mycompany.com意识到这一点,而不需要再次输入凭据。
这是可能的吗?我该如何去做?
1个回答

5

这篇文章提供了我需要的信息。Microsoft.Owin.Security.Interop提供了必要的接口使得它能够正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接