Identity Server 4 + Identity Framework + React前端

Tsa*_*mba 7 javascript reactjs asp.net-identity asp.net-core identityserver4

我正在寻找关于如何正确地将这样的环境放在一起的建议.有大量的信息和快速入门的大量资料,但经过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,甚至是那些不是这些API的应用程序.此外,我需要在某些时候加入AD,以允许内部公司用户通过w/o手动验证.

(我认为)我们需要的是以下内容:

  • Identity Server 4在其自己的容器中运行
  • 核心身份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"
}
Run Code Online (Sandbox Code Playgroud)

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

感觉就像我到了某个地方,但与此同时,我现在完全意识到我知之甚少.可以使用建议,甚至只是指向正确的快速启动以实现我正在寻找的东西.

Aes*_*eir 5

基础设置 基于我理想的读取您想要做的是将其分解为3个组件

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

对于Identity Management组件,使用此快速入门作为示例ASPNetIdentity + IS4 EF没有EF组件的此示例.

您的API应仅授权(不进行身份验证),并在ID4服务器上进行所有身份验证和注册.

您的前端(MVVM或MVC客户端)应该在ID4服务器上注册,并按照教程中的所有铃声和口哨声:

这应该使您能够拥有一个安全的API,单个IdentityManagement源(基本上构建它是一个真正的SSO /联合网关),同时分离应用程序的前端.

希望这可以帮助.

附加信息:

除了答案之外,您还可以使用(或自己构建)OIDC客户端的库,以便您可以将其放入前端,以帮助您更快地获得某些结果.

仅供参考我使用带有AspCoreIdentity + AspCore API的angular + id4.我需要做的就是创建javascript客户端和ID4之间的链接(根据教程和ID4以及Web API.我们使用行业库进行角度的oidc-connect以放入ID4服务器和Web API的设置.

这样做的好处是,一旦你在ID4上进行基本设置,就没有太多需要在它上面构建更高级的功能.

请记住,这些是独立的组件,并完全按照它们对待它们.帮助我困惑和缺乏知识.

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

保持这些组件分离,使您能够更轻松,更快速地将AD集成到ID4服务器,而无需对API或前端应用程序进行修改.在此处利用Windows登录的示例.

  • 链接已失效。:-( (2认同)