IdentityServer3:它可以与现有 users/authentication 一起使用 "side by side" 吗?

IdentityServer3: Can it be used "side by side" with existing users/authentication?

我是 SSO 的新手,所以希望我问的是有道理的。所以我当前的设置是使用 OWIN/cookies (app.UseCookieAuthentication()) 和自定义用户 table(不是 ASP.NET Identity 用户)的 .NET MVC 网站。

所以我想知道我是否可以只为外部提供者添加 IdentityServer3,但保留我所有现有的 user/authentication 内容作为 "local users"。所以我看到您可以实现一个自定义 IUserService 来根据您的本地数据库查找用户,我想我已经做到了,但我什至想避免这种情况。我想避免将 IdentityServer 登录屏幕设置为主题。所以像这样:

  1. 用户点击了具有 [Authorize] 属性的页面。
  2. 用户被重定向到我现有的登录页面(不是 IdentityServer 东西)
  3. 然后我的登录页面将有外部供应商按钮来登录外部供应商。

这可能吗?或者您是否还必须通过 IdentityServer3 运行 您的本地用户?我注意到如果您不提供 IUserService 并且也不使用 UseInMemoryUsers(),我会收到错误消息。

所以根据各种指南,我在我的 Startup.cs 中有这个:app.UseIdentityServer()app.UseCookieAuthentication()app.UseOpenIdConnectAuthentication()Authority 设置为我的 IdentityServer端点。

希望这是有道理的,谢谢!

如果对其他人有帮助,我会回答我自己的问题。这里的重要部分是 OpenIdConnectAuthenticationOptions 中的 AuthenticationModeAuthenticationMode.Active 会在用户点击 [Authorize] 时将用户重定向到您的 OIDC 提供商。AuthenticationMode.Passive 将允许您使用您的 OIDC 提供商作为额外的身份验证方法。您想按照 ExternalLogin()ExternalLoginCallback() 控制器操作的示例向提供者发出挑战,然后将经过身份验证的用户与您的本地用户匹配。