2017-02-09 83 views
1

我查看了Google的OpenId Connect发现文档here。它清楚地表明了支持的说法是:为什么Google的OpenId Connect API不发回所有索赔?

"claims_supported": [ 
    "aud", 
    "email", 
    "email_verified", 
    "exp", 
    "family_name", 
    "given_name", 
    "iat", 
    "iss", 
    "locale", 
    "name", 
    "picture", 
    "sub" 
] 

,支持的范围是

"scopes_supported": [ 
    "openid", 
    "email", 
    "profile" 
] 

我希望,当我发送一个GET请求,OpenId Connect UserInfo end point(这是https://www.googleapis.com/oauth2/v3/userinfo),我会得到返回所有支持的索赔(假设当我通过身份验证时,我请求了所有支持的范围......我发送初始请求时所做的操作如下所示)

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=my-client-id&redirect_uri=http://myapp.com&scope=openid profile email&state=someLongStateIdentifier 

下面是我从用户信息终点请求的响应得到了索赔:

{ 
    "sub": "...", 
    "name": "...", 
    "given_name": "...", 
    "family_name": "...", 
    "picture": "...", 
    "email": "...", 
    "email_verified": true, 
    "locale": "..." 
} 

注意他们是如何支持的所有债权的一个子集......谁能告诉我,为什么我没有得到所有我的回应中支持的声明?

+0

如果我正确理解你的话,你认为UserInfo的终点应该返回你项目的支持范围? – DaImTo

+0

@DalmTo对不起,我很清楚我在想,既然我已经请求并被授予访问每个范围的权限,那么UserInfo端点应该返回每一个支持的索赔 - 而不仅仅是索赔的一个子集。 –

回答

0

您不会总是找回所有受支持的声明。支持的声明意味着 - 他们受到支持。什么决定了它们是否从用户信息终端返回,如果你的用户具有这些关联声明的值。此外,Google也可能会筛选出与用户没有直接关系的声明......因为毕竟它是userinfo终端。