关于声明和访问的OAuth和OpenID混淆

时间:2017-10-31 08:38:46

标签: oauth-2.0 openid identityserver3 openid-connect identityserver4

我正在检查如何使用IdentityServer4,因为我已经听说过很多。我试图让我的概念清晰但我很困惑:

访问令牌:它包含可用于限制API访问的声明,它包含带令牌的客户端信息。

Id令牌:它包含用户的身份信息,不能用于限制对API的访问,但只能通过令牌传递用户信息。

我几乎没有问题:

ApiResources和IdentityResources之间有什么区别?

ApiClaims,ApiScopeClaim和IdentityClaims有什么区别?并且,何时何地使用它们?

由于

1 个答案:

答案 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了解更多信息