我正在检查如何使用IdentityServer4,因为我已经听说过很多。我试图让我的概念清晰但我很困惑:
访问令牌:它包含可用于限制API访问的声明,它包含带令牌的客户端信息。
Id令牌:它包含用户的身份信息,不能用于限制对API的访问,但只能通过令牌传递用户信息。
我几乎没有问题:
ApiResources和IdentityResources之间有什么区别?
ApiClaims,ApiScopeClaim和IdentityClaims有什么区别?并且,何时何地使用它们?
由于
答案 0 :(得分:0)
首先,访问令牌不包含声明。 它只是一个没有声明的JWT令牌。您可能想查看openID规范文档。但简而言之,
依赖方向令牌端点发出GET请求,如下所示:
POST /token/HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-url-encoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
grant_type=authorization_code&code=xxxxxxxxxx&redirect_URI=https%3A%2F%2Fclient.example.org%2Fcb
标识服务器应该返回如下响应:
HTTP/1.1 200 OK
Content-Type: application/json
Cache control: no-store
Pragma: no-cache
{
"access_token": "S1AV32hKG",
"token_type" : "Bearer",
"refresh_token": "xxxxxxxxxxx",
"expires_in": 3600,
"id_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
如您所见,服务器使用访问令牌进行响应,该令牌可用于向userinfo端点发出包含有关用户声明的请求。索赔只是关于资源所有者的更多信息。
这应该是userinfo端点响应:
HTTP/1.1 200 OK
Content-Type: application/json
{
"sub": "248289761001",
"name": "Jane Doe",
"given_name": "Jane",
"family_name": "Doe",
"preferred_username": "j.doe",
"email": "janedoe@example.com",
"picture": "http://example.com/janedoe/me.jpg"
}
阅读http://openid.net/specs/openid-connect-core-1_0.html#UserInfoRequest了解更多信息