【问题标题】:Multiple external clients for users on identityserver4identityserver4 上用户的多个外部客户端
【发布时间】:2017-09-30 15:11:27
【问题描述】:

我正在开展一个项目,该项目允许用户创建用户以创建应用密钥或机密,以便外部客户端可以使用特定服务。用户可以创建多个秘密,他们可以选择在多个客户端中使用这些秘密。

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

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

目前有两件事阻碍了我:

  1. 我不确定通过以下方式提供这些数据是一个好主意还是安全的主意 一个api层。据我了解,identityserver 将无法提供允许我通过端点访问用户客户端列表的功能,但如果我错了,请纠正我,并且有更好的方法来解决这个问题。
  2. 我知道我们可以轻松地创建新客户端并将其保存到带有 identityserver4 的数据库中,并且我计划为用户客户端使用 ClientCredentials 授权类型,但是用户和客户端之间的数据库和身份级别是否存在链接?还是我需要自己创建该功能?

到目前为止,我已经看过,但我还没有找到与我的 identityserver4 情况类似的示例

抱歉这个菜鸟问题,我刚刚进入身份服务器和一般的网络安全,所以很多这些概念对我来说仍然很新。

【问题讨论】:

    标签: authentication asp.net-core authorization identityserver4


    【解决方案1】:

    对于第 1 点,我会说是的,您可以为服务器数据创建一个 API 层。如果您查看IdenttiyServer4 AdminUI,Rock Solid 还使用了 UI 后面的管理 API。但是你必须考虑加密、TLS 和其他安全机制来保证这个安全。

    对于第 2 种 AFIK,用户和客户端之间没有身份级别的链接。你必须自己创造它。

    基本上,您需要一个支持Multitenancy 的系统。我通过在 AspNetIdentity 用户表中添加一个 TenantId 字段来实现这一点。并且还将租户 ID 添加到声明列表中。

    如果我错了,请随时纠正我。

    【讨论】:

    • 谢谢。这消除了我的大部分顾虑。只是不确定您在此处指的是哪个索赔列表:“并且还将租户 ID 添加到索赔列表”。但我假设您的意思是您将其添加到客户声明列表中,而不是用户声明列表中正确?
    • 不,我已经添加了用户声明
    • 哦,在这种情况下,tenantId 不需要匹配客户端上的 ClientId 或客户端上的类似内容吗?基本上通过架构,我应该能够为客户端 2 创建用户 x、y、z,并且只有用户 x 是客户端 2 的所有者
    • 基本上每个租户都支持多台主机,从客户端的redirect uri中获取tenantid。重定向 Uri 必须是唯一的,并且对于客户端是强制性的
    猜你喜欢
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 2017-11-09
    • 2021-05-03
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多