【问题标题】:IdentityServer4 how to get ClientProperties into tokenIdentityServer4如何将ClientProperties转换为令牌
【发布时间】:2018-11-26 22:50:05
【问题描述】:

我有一个带有 EFCore 实现的 IdentityServer4,它运行良好。我需要进行更改以获取令牌中包含的一些客户信息,这被证明是有问题的。我可以将信息包含在 ClientClaims 表中,并在令牌中返回,但我的理解是我应该将此类信息放入 ClientProperties 表中。当我这样做时,它不会在令牌中返回,并且我找不到有关如何将 ClientProperties 表中的数据获取到令牌中的任何信息。

您可能会问为什么我不只使用 ClientClaims 表,但我使用该表来存储客户可以访问的系统区域,因此不希望将其用于交叉用途。

如果您能提供任何帮助,我们将不胜感激。

【问题讨论】:

    标签: entity-framework-core identityserver4 openid-connect


    【解决方案1】:

    properties

    根据需要保存任何自定义客户端特定值的字典。

    客户端属性只是一个字典,您可以使用它来存储有关客户端的额外信息。

    这是我使用它的一个例子。

    Id  ClientId    Key         Value
    265 25          updatedby   21248582
    266 25          updateddate 2018-05-30T06:45:10.2389386+00:00
    

    没有在哪里声明此信息应作为索赔的一部分。

    您可能会说"But a i already stated i dont want to use ClientClaims",但这就是ClientClaims 的用途。

    【讨论】:

    • 感谢 DalmTo。如果您永远无法将信息返回给客户,那么拥有 ClientProperties 有什么意义?如果您只能在 IdentityServer 组件中使用此信息,这似乎非常有限。
    • 你可以在身份服务器上取回它。在验证用户身份时,我有另一个价值,该用户验证用户的个人资料中安装了应用程序,该应用程序与他们登录的客户端相关联。这些值并不意味着作为声明出现,但我想这并不意味着您不能更改 profileservice 以返回它们。
    【解决方案2】:

    Client.Properties 用于保存与该客户端相关的数据。

    确实,交换信息的唯一方法是通过声明,这是最佳实践。您可以包含自定义声明名称,只要确保它们不与标准声明名称冲突即可。

    【讨论】:

      猜你喜欢
      • 2021-02-07
      • 2017-10-23
      • 2017-05-09
      • 2021-07-04
      • 2017-03-30
      • 2020-04-26
      • 1970-01-01
      • 2014-10-12
      • 2016-08-29
      相关资源
      最近更新 更多