Authentication identityserver4上用户的多个外部客户端

Authentication identityserver4上用户的多个外部客户端,authentication,asp.net-core,authorization,identityserver4,Authentication,Asp.net Core,Authorization,Identityserver4,我正在从事一个项目,该项目允许用户创建一个用户来创建应用程序密钥或机密,以便外部客户端可以使用特定的服务。用户可以创建多个机密,他们可以选择在多个客户端之间使用这些机密 为此,我计划创建一个使用identityserver4的解耦身份验证服务器 真正阻碍我的是,我不确定是否应该在auth服务器上创建API层。我考虑在auth server上使用API的原因是,我可以创建一种管理门户客户端,为用户创建、更新和访问其应用程序密钥/机密提供前端。甚至管理门户也将是一个去耦合的应用程序 目前有两件事让我

我正在从事一个项目,该项目允许用户创建一个用户来创建应用程序密钥或机密,以便外部客户端可以使用特定的服务。用户可以创建多个机密,他们可以选择在多个客户端之间使用这些机密

为此,我计划创建一个使用identityserver4的解耦身份验证服务器

真正阻碍我的是,我不确定是否应该在auth服务器上创建API层。我考虑在auth server上使用API的原因是,我可以创建一种管理门户客户端,为用户创建、更新和访问其应用程序密钥/机密提供前端。甚至管理门户也将是一个去耦合的应用程序

目前有两件事让我犹豫不决:

  • 我不确定通过网络提供这些数据是一个好主意还是一个安全的主意 api层。据我所知,identityserver将无法提供允许我通过端点访问用户客户端列表的功能,但如果我错了,请纠正我,并且有更好的方法来实现这一点
  • 我知道我们可以轻松地创建新的客户端,并使用identityserver4将其持久化到数据库中,我计划为用户客户端使用ClientCredentials授权类型,但是用户和客户端之间在数据库和标识级别是否存在链接?或者我需要自己创建该功能吗 到目前为止,我已经看过了,但还没有找到与identityserver4类似的示例


    很抱歉,我只是想了解一下identityserver和web安全,所以这些概念对我来说还是很新的。

    对于第一个问题,我想说是的,您可以创建一个API层来存储数据。如果您检查了,Rock Solid还使用了UI后面的管理API。但是你必须考虑加密、TLS和其他安全机制来保持这个安全性。 AFIK对于2号,用户和客户端之间没有身份级别的链接。你必须自己创造

    基本上,您需要一个支持的系统。我通过在AspNetIdentity用户表中添加一个TenantId字段实现了这一点。并将租户Id添加到索赔列表中


    如果我错了,请立即纠正。

    谢谢。这消除了我的大部分顾虑。只是不确定您在这里指的是哪一个索赔清单:“并且还将租户Id添加到索赔清单”。但我假设你的意思是你将其添加到了客户索赔列表中,而不是用户索赔列表中,对吗?不,我已经添加了用户索赔。在这种情况下,承租人不需要在客户端匹配类似于ClientId的内容,或者在客户端匹配类似的内容吗?基本上,通过该模式,我应该能够为客户机2创建用户x、y、z,并且只有用户x是客户机2的所有者。基本上,每个租户支持多个主机,并且从客户机的重定向uri检索租户ID。重定向Uri对于客户端必须是唯一的和必需的