【发布时间】: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