【问题标题】:Identity Server 4 + Identity Framework + React front-endIdentity Server 4 + Identity Framework + React 前端
【发布时间】:2018-06-27 21:05:41
【问题描述】:

我正在寻找有关如何将这样的环境正确组合在一起的建议。快速入门中包含大量信息和大量材料,但经过 3 天的反复试验后,我仍然感到相当迷茫。我熟悉 .NET Framework 中的 Identity Framework,但在此之前从未使用过 Identity Server。

我们在 Node 和 MySql 上构建了一个微服务设置...... Docker 容器中的一系列服务与 MySql 集群中自己的数据库节点通信。我们有一个内置在 React 和 Redux 中的单一管理 UI——它将从 AWS 存储桶运行。

我的任务是使用 Identity Server 对这个 React 前端进行身份验证。我们不会使用它对 API 进行身份验证。我建议使用 Identity Framework 在 .NET Core 中构建身份验证 UI,因为它为我们提供了“开箱即用”所需的一切。

最终,这两个 Identity 应用程序将成为我们针对所有针对这些 API 编写的应用程序的 SSO,甚至那些不是。此外,我需要在某些时候加入 AD 以允许内部公司用户通过无手动身份验证。

(我认为)我们需要的是:

  • Identity Server 4 在自己的容器中运行
  • Core Identity MVC 应用在自己的容器中运行
  • 在前端使用 oidc-client 进行身份验证

到目前为止,我所做的是遵循以下两个教程:

http://docs.identityserver.io/en/release/quickstarts/6_aspnet_identity.html#new-project-for-asp-net-identity

http://docs.identityserver.io/en/dev/quickstarts/7_javascript_client.html

我的结果是一个正在运行的 Identity Server 和 Identity Core MVC 应用程序在同一个项目(两个不同的端口)中一起运行。在遵循 JS 客户端教程之后,我运行了他们的示例代码 - 它将我重定向到 MVC 登录,它针对 Identity Server 进行身份验证,然后返回此结果:

{
  "sid": "8e60eb65960d967834cb3eb4fdcbbd49",
  "sub": "dfc90bd1-cad4-45d0-84bd-174e8a6ca891",
  "auth_time": 1516296631,
  "idp": "local",
  "amr": [
    "pwd"
  ],
  "preferred_username": "me@gmail.com",
  "name": "me@gmail.com"
}

单击注销失败,但这是因为第一个教程中的控制器示例不包含用于注销的 GET,就像隐藏在 JavaScriptClient 示例中的示例控制器一样。

感觉就像我到了某个地方,但与此同时,我现在完全意识到我知道的有多么少。可以使用建议,甚至只是指向正确快速入门的指针来实现我正在寻找的东西。

【问题讨论】:

  • 你为什么不使用 .Net Web api 并做出反应。使用 json Web token jwt 验证您的 Web api
  • @NetEmmanuel - 这不是团队/部门的专业知识或偏好。身份服务器的要求是从高层传给我们的,因为公司的其他人都在使用它。
  • @NetEmmanuel 是的。我不觉得这对于我正在尝试做的事情是不言自明的……特别是;使用带有 Identity Core(框架)的单独 MVC 应用程序作为 Identity Server 的身份验证前端。
  • 您不需要将 IdentityServer 4 和 ASP.NET Core Identity 分开,它们可以放在一个应用程序中。 IdSrv4 可以设置为使用 ASP.NET Core Identity 作为存储和身份验证,其他所有内容(生成令牌、用户和令牌端点、OAuth/openID)都将由 IdSrv4 处理

标签: javascript reactjs asp.net-core asp.net-identity identityserver4


【解决方案1】:

基础设置 根据我理想地阅读的内容,您想要做的是将其分解为 3 个组件

  • 身份管理组件
  • API 组件
  • MVC/MVVM 组件

对于身份管理组件,请使用此快速入门作为示例 ASPNetIdentity + IS4 EFthis one without the EF component

您的 API 应该只在 ID4 服务器上发生的所有身份验证和注册授权(而不是身份验证)。

您的前端(MVVM 或 MVC 客户端)应按照教程向 ID4 服务器注册,并附上所有的花里胡哨:

这应该使您能够拥有一个受保护的 API、单一 IdentityManagement 源(基本上在其上构建为真正的 SSO/联合网关),同时分离应用程序的前端.

希望这会有所帮助。

其他信息:

除了答案之外,您还可以为 OIDC 客户端使用(或自己构建)库来做出反应,您可以将其放入前端以帮助您更快地获得一些结果。

仅供参考,我将 angular + id4 与 AspCoreIdentity + AspCore API 一起使用。 我需要做的就是创建 javascript 客户端和 ID4 之间的链接(根据教程和 ID4 和 Web API。我们使用行业库的 oidc-connect 角度来输入 ID4 服务器和 Web API 的设置。

这样做的好处是,一旦您在 ID4 上进行了基本设置,就不需要在其上构建更多高级功能。

请记住,这些是独立的组件,并完全按其处理。帮助我解决了困惑和缺乏知识。

Windows 和 AD 登录(未来状态):

将这些组件分开,将使您能够更轻松、更快速地将 AD 集成到 ID4 服务器中,而无需修改 API 或前端应用程序。利用 Windows 登录 here 的示例。

【讨论】:

  • 谢谢,这很有帮助。我已经启动并运行(减去 AD)并且效果很好!验证我的 React 应用程序很容易。
  • 链接已失效。 :-(
猜你喜欢
  • 2018-04-21
  • 2018-06-03
  • 2020-03-22
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
  • 2020-01-11
相关资源
最近更新 更多