【问题标题】:Add additional information to access token for IdentityServer 4添加附加信息以访问 IdentityServer 4 的令牌
【发布时间】:2018-02-05 18:33:04
【问题描述】:

例如,客户端使用附加字段location: USA 发送访问令牌请求。我在哪里可以存储该字段,然后从客户端传回我的服务器?我的意思是,该字段必须出现在所有请求中,但某些值可能会有所不同。

示例请求:

POST /connect/token

formData: {
  client_id: 'some_id',
  client_secret: 'some_secret',
  grant_type: 'client_credentials',
  scope: 'some_scope',
  location: 'USA' 
}

回复:

{
  "access_token": "",
  "expires_in": 43200,
  "token_type": "Bearer"
}

解码令牌的负载

{
  "nbf": 1517821102,
  "exp": 1517864302,
  "iss": "",
  "aud": [],
  "client_id": "some_id",
  "scope": [ "some_scope" ],
  "location": 'USA'
}

我在 ASP.NET Core 上使用 IdentityServer 4

【问题讨论】:

  • “某些值可能不同”是什么意思?
  • @RuardvanElburg 我的意思是位置不仅可以是美国,还可以是例如其他国家/地区。
  • 如果每个客户的位置是固定的,那么您可以将其作为声明添加到 ClientClaims 表中。
  • @RuardvanElburg 这就是问题所在,位置不固定,客户可以从提供的列表中选择任何位置。
  • 这是一个自动化流程,客户该如何选择?为什么会改变?如果涉及某些用户交互,您可能没有使用正确的流程。在任何情况下,该信息似乎不应该是令牌的一部分,而应该作为每个查询的参数发送。不应该将经常更改的值存储在令牌中。

标签: c# asp.net-core identityserver4


【解决方案1】:

您应该能够实现自定义IProfileService 并设置ProfileDataRequestContextIssuedClaims 属性。这应该使您能够在访问令牌中发送自定义声明。 See the documentation 了解更多信息。

【讨论】:

  • 谢谢,我试试!
猜你喜欢
  • 1970-01-01
  • 2019-12-30
  • 2018-03-06
  • 2017-11-21
  • 2016-07-31
  • 1970-01-01
  • 2017-05-14
  • 2018-02-21
  • 2021-03-15
相关资源
最近更新 更多