如何使用Identity Server实现SSO?

时间:2017-09-06 12:33:45

标签: asp.net-identity single-sign-on owin openid-connect identityserver4

我有许多使用.NET成员身份和表单身份验证的旧版.NET Framework Web应用程序。他们每个人都有自己的登录页面,但他们都在同一个域(例如.mycompany.com),共享一个ASP.NET成员资格数据库并共享一个机器密钥,这样他们就能识别彼此的cookie来实现SSO;即如果您登录到一个应用程序,那么您将全部登录到这些应用程序,与登出时相同。

现在我希望所有未来的应用程序都在.NET Core中开发,并使用通用的Identity Server作为集中身份验证机制。我有一个简单的Identity Server启动和运行以及几种不同风格的.NET Core客户端应用程序。这一切都很棒。我无法克服的障碍是所有mycompany.com应用程序中的SSO。 Brock Allen建议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了解这一点,并且不要求我再次输入我的凭据。

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

1 个答案:

答案 0 :(得分:2)

This article完全掌握了我正在寻找的信息。 Microsoft.Owin.Security.Interop提供了使其工作所需的填充程序。