Мы решили эту проблему, используя ссылку SO здесь .
Похоже, что токен, сгенерированный AWS Cognito, теперь добавляет новое требование aud
к токену. Spring OAuth ожидает, что утверждение aud
в токене JWT будет oauth2-resource
по умолчанию.
Исправлено добавление aud
в токен JWT в конфигурации Spring Resource Server со значением client_id
. ,
@Value("${security.oauth2.resource.id:}")
private String jwtAudResourceId;
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
resources.resourceId(jwtAudResourceId);
}
Информацию о заявках JWT в Cognito Token можно найти здесь .
Обновления
Похоже, AWS отменил изменение, добавив претензию aud в токен JWT. Мы больше не получаем претензию 'aud' в JWT
Декодированный JWT, который мы получали вчера (15 октября 2019 года)
{
"sub": "XXXXXXXXXXXXXXXXX",
"aud": "SAME_AS_CLIENT_ID",
"token_use": "access",
"scope": "SOMESCOPE",
"auth_time": 1571132619,
"iss": "SOME_ISSUER",
"exp": 1571136219,
"iat": 1571132619,
"version": 2,
"jti": "8XXXXXXXXXXXXXXXX",
"client_id": "SAME_AS_CLIENT_ID",
"username": "SOME_USERNAME"
}
Декодированный JWT, который мы получаем сегодня (16 октября 2019 * 1028)*
{
"sub": "XXXXXXXXXXXXXXXXX",
"token_use": "access",
"scope": "SOMESCOPE",
"auth_time": 1571227222,
"iss": "SOME_ISSUER",
"exp": 1571230822,
"iat": 1571227222,
"version": 2,
"jti": "8XXXXXXXXXXXXXXXX",
"client_id": "SAME_AS_CLIENT_ID",
"username": "SOME_USERNAME"
}
Так что теперь он должен работать, даже если мы НЕ настроим его, как показано ниже. ИЛИ удалите приведенный ниже фрагмент из класса конфигурации:
@Override
public void configure(ResourceServerSecurityConfigurer config) throws
Exception {
config.resourceId(null).tokenServices(tokenServices());
}