Почему API OpenId Connect от Google не отправляет все претензии?
Я посмотрел документ открытия Google OpenId Connect здесь. Это ясно показывает, что поддерживаемые претензии:
"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 (то есть 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
Вот претензии, которые я получил в ответе на запрос конечной точки UserInfo:
{
"sub": "...",
"name": "...",
"given_name": "...",
"family_name": "...",
"picture": "...",
"email": "...",
"email_verified": true,
"locale": "..."
}
Обратите внимание, что они являются подмножеством всех поддерживаемых утверждений... Может кто-нибудь сказать мне, почему я не получаю все поддерживаемые утверждения в своем ответе?
1 ответ
Вы не всегда получите обратно все поддерживаемые претензии. Поддерживаемые требования означают именно это - они поддерживаются. Что определяет, будут ли они возвращены из конечной точки userinfo или нет, так это то, что у вашего пользователя есть значения для этих связанных утверждений. Кроме того, Google также может отфильтровывать утверждения, которые не имеют прямого отношения к пользователю... потому что, в конце концов, это конечная точка userinfo.