1

我有一些使用.NET Membership和Forms Authentication的遗留.NET Framework Web应用程序。他们每个人都有他们自己的登录页面,但他们都在同一个域(例如.mycompany.com)上,共享一个ASP.NET成员资格数据库并共享一个机器密钥,以便他们能够识别彼此的Cookie以实现SSO;即如果您登录到一个应用程序,那么您将登录到它们中,与登出相同。如何使用Identity Server实现SSO?

现在我想要在.NET Core中开发所有未来的应用程序,并使用通用的Identity Server作为集中式身份验证机制。我有一个简单的Identity Server启动并运行,以及一些不同风格的.NET Core客户端应用程序。所有这些都很好。我似乎无法克服的障碍是所有mycompany.com应用程序中的SSO。布罗克艾伦建议here,我看看客户样本的灵感。

MVC OWIN客户端(隐式)样本让我获得大部分途径。我能够移植我的旧版应用程序以使用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知道这一点,并且不要求我再次输入我的凭证。

这可能吗?我会怎么做呢?

回答

2

This article恰好具有我正在寻找的信息。 Microsoft.Owin.Security.Interop提供了所需的垫片以使其发挥作用。