【问题标题】:IdentityServer4 and Seperate User Authentication ApiIdentityServer4 和单独的用户身份验证 API
【发布时间】:2019-03-26 11:46:13
【问题描述】:

我正在尝试使用 IdentityServer4 进行身份验证和授权。我们有一套新的和现有的应用程序。

此时我们有: - 1 个 ReactJs 应用程序 - (没有身份验证,因为它是一个新应用程序)但它将使用 oidc-client 使用隐式流 - 1 个相当老的 Web 表单应用程序 - 可能会使用混合流(我仍然需要弄清楚) - 2 个 .NetCore MVC Web 应用程序 - 它们都将使用 Hybrid Flow

  • 我们想要使用 IDS4 保护的 api 项目很少。

WebForm 和 MVC 应用程序都使用自己的 Web 服务与某些数据库通信以验证用户凭据并让用户登录到应用程序。

最终,我们希望将用户从现有数据库迁移到单独的用户数据库。 IdentityServer 还将利用这个新的用户数据库进行 SSO + Api 授权。

我正在考虑创建一个单独的 api,仅用于用户身份验证(可能是 AspNetIdentity 作为 webapi)和 IdentityServer4 与此 api 通信以验证用户名/密码?这看起来对吗?

另外,如何配置 IDServer4 以使用 Api 进行身份验证,而不是使用 services.AddIdentityServer().AddAspNetIdentity() 直接与我的 AspNewIdentity 数据库对话?以及如何确定这个api?我能找到任何样品吗?

【问题讨论】:

  • 为什么不想在同一个应用程序中托管带有 Identity 的 IdSrv4?
  • 因为我想让它们分开......很多原因 1. Identity Api 可以潜在地与多个数据库对话以对用户进行身份验证 2. Admin UserManagement App 可以通过 IdServer 访问令牌直接使用此 api用于创建用户、重置密码、锁定用户、管理角色和权限等操作。

标签: c# asp.net-web-api asp.net-core identityserver4


【解决方案1】:

我不得不做这样的事情,我发现这些很有用

http://docs.identityserver.io/en/release/quickstarts/1_client_credentials.html http://docs.identityserver.io/en/release/quickstarts/2_resource_owner_passwords.html

我用它来保护来自 Asp Identity 的用户的 api。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    IdentityServer4 并没有真正做到开箱即用。 ASP.Net Identity 集成只是为了让您快速启动和运行。如果您想实现自己的用户存储和登录/注销/向上流程,那么您完全可以随心所欲地执行此操作。

    也就是说,我喜欢让 IDP 拥有自己的数据 - 即用户及其凭据。当涉及到不混合身份验证和授权时,这有助于让您保持直截了当。 OAuth中的Auth是client授权别忘了。

    【讨论】:

    • 是否有可以将自定义用户存储定义为 API 的示例。另外,我是否在 IdServer 帐户控制器中使用 HttpClient 显式调用 api 端点来验证用户?什么访问令牌?并且由于 IdServer 将向此 API 发出请求,我该如何保护此 API,我应该在 IdentityServer 中创建一个客户端作为“identityServer”吗?并且 Api 使用 IdServer 是否安全?
    • @hanz 您是否找到了解决您的查询以使用自定义用户存储/身份验证作为外部 API 的解决方案?
    猜你喜欢
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 2012-08-07
    • 2021-05-01
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多