Мы запускаем приложение, которое кэширует некоторые подробности о пользователях внутри.
В прошлом месяце (6 декабря) он перестал работать с перерывами в течение дня и прекратил работу совсем поздно вечером CET.
Проблема появилась одновременно во всех четырех проектах на улице DTAP, а также во всех доменах, на которых она авторизована. До этого не было выполнено ни одного недавнего развертывания, и этот код работал без проблем около двух лет.
Приложение работает в стандартной среде Java 8 App Engine, мы следим за ресурсом Users через API Admin Directory. Вызов авторизован с использованием учетной записи службы, подражающей администратору.
Исключение:
com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized
at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105)
at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287)
at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:307)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.executeRefreshToken(GoogleCredential.java:394)
at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:493)
В отличие от большинства ошибок этого API, этот файл не содержит никаких подробностей.
Учетная запись службы по-прежнему существует, файлы ключей присутствуют, а области установлены для каждого соответствующего домена.
Ошибка идентична при использовании обеих областей, перечисленных в документации (https://developers.google.com/admin-sdk/directory/v1/reference/users/watch)
https://www.googleapis.com/auth/admin.directory.user.readonly
а также
https://www.googleapis.com/auth/admin.directory.user
Пользователь с правами администратора также имеет доступ к каталогу, в зависимости от домена, он либо является супер-администратором, либо ему был предоставлен более детальный доступ.
В зависимости от текущей активной версии приложение использует клиентскую библиотеку Java "com.google.apis:google-api-services-admin-directory"
версии directory_v1-rev105-1.25.0
или directory_v1-rev93-1.23.0
.
Срок действия этих часов истекает, и они обновляются ежечасно. Проекция установлена на "full"
, тип просмотра - "admin_view"
, а тип канала "web_hook"
направлен на сервлет в том же проекте.
Звонки users.get в приложении с использованием тех же (кэшированных) учетных данных, учетной записи службы, пользователя-администратора и клиента API продолжали работать до сих пор.
Поскольку ошибка появилась одновременно в нескольких проектах и доменах, нам интересно, изменилось ли что-нибудь в API, что могло бы объяснить эту проблему.