小编典典

Identity Server 4 + Identity Framework + React前端

reactjs

我正在寻找有关如何正确整合这样的环境的建议。快速入门中包含大量信息和内容,但是经过3天的反复试验,我仍然感到相当失落。我很熟悉.NET
Framework中的Identity Framework,但在此之前从未与Identity Server合作过。

我们有一个基于Node和MySql的微服务设置…
Docker容器中的一系列服务,这些服务与MySql集群中自己的db节点通信。我们有一个内置在React&Redux中的管理UI,它将在AWS存储桶中运行。

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

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

我需要的是以下内容:

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

到目前为止,我已经完成了以下两个教程:

http://docs.identityserver.io/zh-
CN/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进行身份验证服务器,然后返回以下结果:

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

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

感觉好像要到某个地方,但与此同时,我现在完全意识到自己所知不多。可以使用建议,甚至只是指向正确的快速入门的指针来实现我想要的。


阅读 573

收藏
2020-07-22

共1个答案

小编典典

基本设置 根据我的理想阅读情况,您想要将其分解为3个部分

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

对于身份管理组件,请使用此快速入门作为示例ASPNetIdentity + IS4
EF
不带EF组件的示例。

您的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或Frontend应用程序。在此处利用Windows登录的示例。

2020-07-22