Настройте полезную нагрузку JWT для безопасности пружины, загрузки пружины и OAuth2 - PullRequest
0 голосов
/ 01 октября 2019

Я переопределяю метод расширения из класса JwtAccessTokenConverter.java и пытаюсь настроить информацию о полезной нагрузке JWT. Ниже приведен код расширенного класса.

public class NewAccessTokenConvertor extends JwtAccessTokenConverter {

    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {

        DefaultOAuth2AccessToken fooAccessToken = new DefaultOAuth2AccessToken(accessToken);

        Map<String,Object> valueMap = new HashMap<>();
        valueMap.put("name","test");

        String name = authentication.getName();

        fooAccessToken.setAdditionalInformation(valueMap);

        return super.enhance(fooAccessToken,authentication);
    }
}

Ниже приведен метод tokenEnhancer, который я написал.

@Bean
    public JwtAccessTokenConverter tokenEnhancer() {
        JwtAccessTokenConverter converter = new NewAccessTokenConvertor();
        converter.setSigningKey("123");
        return converter;
    }

Я выполняю API / oauth / token, добавленная информация уже отображается в JWTполезная нагрузка токена, а также отображение в ответной нагрузке. Ниже следует указать тело токена JWT и полезную нагрузку ответа.

Полезная нагрузка токена JWT

{
  "aud": [
    "app1",
    "app2"
  ],
  "user_name": "testuser",
  "scope": [
    "READ",
    "WRITE"
  ],
  "name": "test",
  "exp": 1569929226,
  "jti": "c49f0fbf-fceb-47ea-a613-8550b2efe575",
  "client_id": "testclient"
}

Полезная нагрузка ответа

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsicGF5bWVudCIsImludmVudG9yeSJdLCJ1c2VyX25hbWUiOiJrcmlzaCIsInNjb3BlIjpbIlJFQUQiLCJXUklURSJdLCJuYW1lIjoibGFrc2hpdGhhIiwiZXhwIjoxNTY5OTI5MjI2LCJqdGkiOiJjNDlmMGZiZi1mY2ViLTQ3ZWEtYTYxMy04NTUwYjJlZmU1NzUiLCJjbGllbnRfaWQiOiJtb2JpbGUifQ.siryNGlQrDguWTxzs9Y3NsNPxl8a4hXd3hqZySQ0okk",
  "token_type": "bearer",
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsicGF5bWVudCIsImludmVudG9yeSJdLCJ1c2VyX25hbWUiOiJrcmlzaCIsInNjb3BlIjpbIlJFQUQiLCJXUklURSJdLCJhdGkiOiJjNDlmMGZiZi1mY2ViLTQ3ZWEtYTYxMy04NTUwYjJlZmU1NzUiLCJuYW1lIjoibGFrc2hpdGhhIiwiZXhwIjoxNTY5OTM1NjI2LCJqdGkiOiI4ODE2NDc3Yi02ZTk4LTRiZmEtYWEzYi0xYTYxNTZmYTlhYzIiLCJjbGllbnRfaWQiOiJtb2JpbGUifQ.2XEWC60M3GwSKyQFiF68EZlOANFwphcYWEi1hPAWPoA",
  "expires_in": 3599,
  "scope": "READ WRITE",
  "name": "test",
  "jti": "c49f0fbf-fceb-47ea-a613-8550b2efe575"
}

Пожалуйста, предоставьте мне решение для удаления дополнительной информации из полезной нагрузки ответа. Я хочу это только в теле полезной нагрузки JWT.

...