在 appsettings 中定义 Identity Server 客户端的未记录方式
Undocumented way to define Identity Server clients in appsettings
我在探索身份服务器配置时发现了一个有趣的特性。这是根据 the official document:
在 appsettings.json 中定义客户端的方式
{
"IdentityServer": {
"Clients": [
{
"ClientId": "TestClient1",
"RedirectUri": "/redirect",
"AccessTokenLifetime": 1800
},
{
"ClientId": "TestClient2",
"RedirectUri": "/redirect",
"AccessTokenLifetime": 1800
}
]
}
}
如您所见,需要将一个数组传递到 IdentityServer 配置的 "Clients" 属性 中。
令人惊讶的是,以下代码也有效:
{
"IdentityServer": {
"Clients": {
"TestClient1": {
"Profile": "SPA",
"RedirectUri": "/redirect",
"AccessTokenLifetime": 1800
},
"TestClient2": {
"Profile": "SPA",
"RedirectUri": "/redirect",
"AccessTokenLifetime": 1800
}
}
}
}
它将对象传递到 "Clients" 属性。在这种情况下,sub属性 ("TestClient1", "TestClient2") 的名称映射到 ClientId。 RedirectUri 也可以正常工作,但会跳过其他属性(如 AccessTokenLifetime)。
那么,它为什么有效?在哪里可以找到描述这种 IdentityServer 配置方式的文档?
在 IdentityServer 代码上确实没有什么特别之处,这就是它没有记录的原因。 here is the line of code where it reads the config. As you see it uses Config.Bind 分机。
我在探索身份服务器配置时发现了一个有趣的特性。这是根据 the official document:
在 appsettings.json 中定义客户端的方式{
"IdentityServer": {
"Clients": [
{
"ClientId": "TestClient1",
"RedirectUri": "/redirect",
"AccessTokenLifetime": 1800
},
{
"ClientId": "TestClient2",
"RedirectUri": "/redirect",
"AccessTokenLifetime": 1800
}
]
}
}
如您所见,需要将一个数组传递到 IdentityServer 配置的 "Clients" 属性 中。
令人惊讶的是,以下代码也有效:
{
"IdentityServer": {
"Clients": {
"TestClient1": {
"Profile": "SPA",
"RedirectUri": "/redirect",
"AccessTokenLifetime": 1800
},
"TestClient2": {
"Profile": "SPA",
"RedirectUri": "/redirect",
"AccessTokenLifetime": 1800
}
}
}
}
它将对象传递到 "Clients" 属性。在这种情况下,sub属性 ("TestClient1", "TestClient2") 的名称映射到 ClientId。 RedirectUri 也可以正常工作,但会跳过其他属性(如 AccessTokenLifetime)。
那么,它为什么有效?在哪里可以找到描述这种 IdentityServer 配置方式的文档?
在 IdentityServer 代码上确实没有什么特别之处,这就是它没有记录的原因。 here is the line of code where it reads the config. As you see it uses Config.Bind 分机。