Identity Server 4 - 用户身份验证 - 机密应用程序 - 多客户端密钥 - 一个Client_ID

问题描述 投票:0回答:1

我有一个第三方客户端应用程序(移动应用程序 - 带有客户端密钥)连接到Identity Server以获取对资源服务器的访问权限的方案。在用户登录期间,客户端应用程序显示多个商店位置供用户登录。

客户端应用程序旨在为每个商店位置和一个Client_ID提供唯一的密钥。

当最终用户选择商店进行登录时 - ID Server从客户端应用程序获取具有Client_ID和与商店位置匹配的特定秘密的请求。

我在这里的问题是,如何使Identity Server(3或4)根据商店位置执行用户登录。

我正在考虑拦截Client_Secret以在用户登录期间使用它来通过使用查找表来映射到正确的商店ID。

这是一个很好的方法来解决这个问题,或者有人可以提出任何可能的建议,使这个场景与Identity Server一起工作。

预期流程:

  1. 客户端应用程序在登录屏幕中显示存储位置
  2. 用户选择特定的商店位置
  3. 将用户定向到Identity Server授权端点并进行客户端验证。
  4. 授权服务器显示 - 用户登录屏幕
  5. 授权服务器根据存储位置对最终用户进行身份验证。 (需要弄清楚实现这一目标的方法)
identityserver4 identityserver3
1个回答
0
投票

如果您打算在移动应用程序本身内而不是在浏览器客户端内完成登录流程,那么您将需要使用resource owner credentials授权类型,在这种情况下,如果您每个商店有一个或多个秘密并不重要根据您的方案验证单个客户端。

另一方面,如果您打算在浏览器客户端中完成登录流程,那么如果您有很多秘密或一个秘密也无关紧要,因为在这种情况下我假设商店选择将在您登录屏幕中完成提到哪些是auth服务器的一部分。

总而言之,除非用户凭据和商店ID之间存在某种联系,否则商店中的位置似乎无关紧要。如果是这种情况,那么这本质上是一个针对Identity Server 4的多租户问题,对于该问题,已经有讨论已经提出建议。

https://github.com/IdentityServer/IdentityServer4/issues/2673

How should you secure a multi-tenant API with Identity Server?

© www.soinside.com 2019 - 2024. All rights reserved.