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
登录屏幕设置为主题。所以像这样:
- 用户点击了具有
[Authorize]
属性的页面。
- 用户被重定向到我现有的登录页面(不是
IdentityServer
东西)
- 然后我的登录页面将有外部供应商按钮来登录外部供应商。
这可能吗?或者您是否还必须通过 IdentityServer3
运行 您的本地用户?我注意到如果您不提供 IUserService
并且也不使用 UseInMemoryUsers()
,我会收到错误消息。
所以根据各种指南,我在我的 Startup.cs 中有这个:app.UseIdentityServer()
、app.UseCookieAuthentication()
和 app.UseOpenIdConnectAuthentication()
,Authority
设置为我的 IdentityServer端点。
希望这是有道理的,谢谢!
如果对其他人有帮助,我会回答我自己的问题。这里的重要部分是 OpenIdConnectAuthenticationOptions
中的 AuthenticationMode
。 AuthenticationMode.Active
会在用户点击 [Authorize]
时将用户重定向到您的 OIDC 提供商。AuthenticationMode.Passive
将允许您使用您的 OIDC 提供商作为额外的身份验证方法。您想按照 ExternalLogin()
和 ExternalLoginCallback()
控制器操作的示例向提供者发出挑战,然后将经过身份验证的用户与您的本地用户匹配。
我是 SSO 的新手,所以希望我问的是有道理的。所以我当前的设置是使用 OWIN
/cookies (app.UseCookieAuthentication()
) 和自定义用户 table(不是 ASP.NET Identity
用户)的 .NET MVC
网站。
所以我想知道我是否可以只为外部提供者添加 IdentityServer3
,但保留我所有现有的 user/authentication 内容作为 "local users"。所以我看到您可以实现一个自定义 IUserService
来根据您的本地数据库查找用户,我想我已经做到了,但我什至想避免这种情况。我想避免将 IdentityServer
登录屏幕设置为主题。所以像这样:
- 用户点击了具有
[Authorize]
属性的页面。 - 用户被重定向到我现有的登录页面(不是
IdentityServer
东西) - 然后我的登录页面将有外部供应商按钮来登录外部供应商。
这可能吗?或者您是否还必须通过 IdentityServer3
运行 您的本地用户?我注意到如果您不提供 IUserService
并且也不使用 UseInMemoryUsers()
,我会收到错误消息。
所以根据各种指南,我在我的 Startup.cs 中有这个:app.UseIdentityServer()
、app.UseCookieAuthentication()
和 app.UseOpenIdConnectAuthentication()
,Authority
设置为我的 IdentityServer端点。
希望这是有道理的,谢谢!
如果对其他人有帮助,我会回答我自己的问题。这里的重要部分是 OpenIdConnectAuthenticationOptions
中的 AuthenticationMode
。 AuthenticationMode.Active
会在用户点击 [Authorize]
时将用户重定向到您的 OIDC 提供商。AuthenticationMode.Passive
将允许您使用您的 OIDC 提供商作为额外的身份验证方法。您想按照 ExternalLogin()
和 ExternalLoginCallback()
控制器操作的示例向提供者发出挑战,然后将经过身份验证的用户与您的本地用户匹配。