2016-07-19 4 views
2

Привет, Я использую Spring Security Oauth2 с JWTTokenStore. Я хочу прочитать содержимое токена из службы REST после отправки пользователем запроса ресурса. например: curl -i -H "Авторизация: Носитель" http://localhost:8080/api/UserDetailsЧтение содержимого токена JWT в службе REST

читать токен в сервисе UserDetails.

спасибо.

+0

https://github.com/nielsutrecht/jwt-angular-spring Проверьте этот проект он является простым и эффективным и имеет что «Authorization: Bearer», как вы его называете. –

ответ

0

если ваш заголовок запроса имеет токен jwt. сделайте следующее:

String jwtToken = request.getHeader("Authorization"); 
Claims claims = Jwts.parser().setSigningKey("secretkey") 
           .parseClaimsJws(jwtToken).getBody(); 
claims.getSubject(); 
claims.getExpiration(); 

, где secretkey - это ключ, используемый при создании токена jwt.

0

У вас есть несколько вариантов, чтобы сделать это:

((OAuth2AuthenticationDetails) SecurityContextHolder.getContext() 
    .getAuthentication().getDetails()) 
     .getTokenValue(); 

Преимущество этого первого варианта издевается в интеграционных тестах.

Или:

@AutoWired 
private OAuth2ClientContext oAuth2ClientContext ; 

public void getToken() { 
    String token = oAuth2ClientContext.getAccessToken().getValue(); 
} 

Я действительно не знаю, как дразнить OAuth2ClientContext в тесте интеграции.

Или (если маркер передается с использованием имени «авторизация»):

((ServletRequestAttributes) RequestContextHolder 
    .currentRequestAttributes()) 
     .getRequest().getHeader("Authorization"); 
Смежные вопросы