Я использую аутентификацию Google OpenIDConnect и хочу проверить JWT id_token
, возвращенный Google. . Однако документация кажется противоречивой в отношении того, какое значение возвращает Google для утверждения iss
(эмитент) в токене идентификатора.
Одна страница говорит: "iss: всегда account.google. com", но на другой странице написано: "Ценность iss в токен идентификатора равен accounts.google.com
или https://accounts.google.com
", а комментарий в примере кода поясняет:
// If you retrieved the token on Android using the Play Services 8.3 API or newer, set
// the issuer to "https://accounts.google.com". Otherwise, set the issuer to
// "accounts.google.com". If you need to verify tokens from multiple sources, build
// a GoogleIdTokenVerifier for each issuer and try them both.
У меня есть серверное приложение, а не приложение для Android, поэтому я не использую Play Services.
Чтобы еще больше замутить воду, сама спецификация OpenIDConnect содержит примечание тот:
Разработчики должны иметь в виду, что на момент написания этой статьи развернутая реализация Google OpenID Connect выпускает токены идентификаторов, в которых отсутствует требуемый префикс схемы https:// в значении утверждения iss (эмитента). Реализации проверяющей стороны, желающие работать с Google, должны иметь код для обхода этого до тех пор, пока их реализация не будет обновлена. Любой такой обходной код должен быть написан таким образом, чтобы не сломаться в такой момент, когда Google добавляет отсутствующий префикс к своим значениям эмитента.
Этот документ датирован 8 ноября 2014 года. С тех пор Google стандартизировал значение iss
, или мне действительно нужно проверить их оба? Комментарий выше, кажется, указывает на то, что только Play Services>=8.3 получает iss
с https://
, а во всех остальных случаях значение будет просто accounts.google.com
. Это правда?
issuer-uri
. Печально, что спустя 4 года после даты документа это все еще проблема. - person ReservedDeveloper   schedule 17.12.2018