Как предотвратить появление ошибки 401 в AWS Cognito Jhipster (Spring Boot 2.5.5) «Маркер доступа не содержит области openid»

#spring #amazon-cognito #jhipster

Вопрос:

Я создал автономное приложение JHipster с поддержкой OAuth Cognito. Я настроил 2 клиентских приложения Cognito под названием TestServer и testMobile в aws cognito.

Все работает нормально при входе в систему из модуля администратора (с помощью клиента cognito TestServer).

Я также могу войти в систему из собственного клиента React (используя amazon-cognito-identity-js и конфигурацию клиента aws приложения testMobile). Это возвращает маркер доступа, который используется для последующих вызовов приложения Jhipster server. Однако при попытке использовать этот маркер доступа для запроса вызова REST приложение jhipster выдает следующую ошибку:

 Caused by: org.springframework.web.client.HttpClientErrorException$Unauthorized: 401 Unauthorized: [{"error":"invalid_token","error_description":"Access token does not contain openid scope"}] at Caused by: org.springframework.web.client.HttpClientErrorException$Unauthorized: 401 Unauthorized: [{"error":"invalid_token","error_description":"Access token does not contain openid scope"}] at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:105)  

Вот тут-то все и становится очень странным. Если я использую Postman для генерации токена доступа (используя тот же идентификатор и pwd, что и в приложении React native, и сделаю вызов REST на сервер JHipster), а затем снова попробую мобильное приложение, оно действительно работает, даже если ничего не изменилось. Таким образом, токен, не имеющий области openid, на самом деле работает тогда и только тогда, когда пользователь сначала проходит аутентификацию в Postman.

У нас есть аналогичное приложение, созданное с предыдущей версией JHipster, в котором нет этой проблемы (однако мы используем Amplify с другим нашим собственным приложением React).

Может ли кто-нибудь объяснить мне, что происходит? Почему приложение JHipster принимает токен, который в одних случаях не имеет области openid, а в других-нет? Решило бы эту проблему переключение на использование Amplify вместо amazon-cognito-identity-js (поскольку мы можем запросить токен с областью действия openid в Amplify). У нас никогда раньше не было этой проблемы, и мы не уверены, в чем причина проблемы.

Мы видели другие ответы, в которых они предлагают запросить маркер доступа с областью действия openid, но это не объясняет, почему он работает в одних случаях, а не в других.

Возможно ли, что JHipster кэширует пользователя (из первоначального запроса, сделанного почтальоном), и поэтому не пытается проверить токен с помощью Cognito для второго запроса из приложения React native?

Заранее благодарю вас за вашего помощника.

ОБНОВЛЕНИЕ: использование Amplify с React native не решило проблему