IdentityServer3:可以并用#34;并排#34;与现有用户/身份验证?

时间:2017-08-25 17:55:11

标签: asp.net-mvc single-sign-on identityserver3

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

所以我想知道我是否只能为外部提供商添加IdentityServer3,但是保留所有现有的用户/身份验证内容,以及#34;本地用户"。所以我看到你可以实现一个自定义IUserService来查找用户对你的本地数据库,我认为我有这个工作,但我想甚至避免这样做。我想避免隐藏IdentityServer登录屏幕的主题。所以像这样:

  1. 用户点击具有[Authorize]属性的页面。
  2. 用户被重定向到我现有的登录页面(不是IdentityServer东西)
  3. 然后我的登录页面将有外部提供程序按钮登录外部提供程序。
  4. 这可能吗?或者您还必须通过IdentityServer3运行本地用户吗?我注意到,如果您不提供IUserService并且不使用UseInMemoryUsers(),我会收到错误。

    因此,通过以下各种指南,我在我的Startup.cs中有这个:app.UseIdentityServer()app.UseCookieAuthentication()app.UseOpenIdConnectAuthentication()Authority设置为我的IdentityServer端点。

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

1 个答案:

答案 0 :(得分:1)

如果它可以帮助其他人,那就回答我自己的问题。这里重要的部分是AuthenticationMode中的OpenIdConnectAuthenticationOptionsAuthenticationMode.Active会在用[Authorize]点击操作时将用户重定向到您的OIDC提供商。AuthenticationMode.Passive将允许您将您的OIDC提供商用作其他身份验证方法。您希望通过ExternalLogin()ExternalLoginCallback()控制器操作来跟踪示例,这些操作会向提供程序发出挑战,然后将身份验证用户与您的本地用户进行匹配。