Почему 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.

Другие вопросы по тегам