2016-08-18 2 views
0

Так что я использовал ответ для этого question как мой учебник по аутентификации на токенах. Но у меня все еще есть проблема с настройкой заголовка авторизации.Настройка заголовка на предъявителя в jax-rs

В моем методе authenticateUser я пытался настроить заголовок носителя, вот-й код

@POST 
@Path("https://stackoverflow.com/users/authentication") 
@Produces("application/json") 
@Consumes("application/x-www-form-urlencoded") 
public Response getUsers(@FormParam("username") String username, 
     @FormParam("password") String password){  

    try{ 
     if(userDao.existUser(username, password)){ 
      User uUser = new User(userDao.getUser(username, password)); 
      uUser.setToken(userDao.issueToken()); 
      uUser.setTokenExpDate(); 
      userDao.updateUser(uUser); 
      Response response = Response.ok(userDao.getUser(uUser.getId()).getToken()) 
        .header(HttpHeaders.AUTHORIZATION, "Bearer "+userDao.getUser(uUser.getId()).getToken()) 
        .build(); 
      System.out.println(response.getHeaderString(HttpHeaders.AUTHORIZATION)); 
      return response;     
      } 
     }catch(Exception e){ 
      return Response.status(Response.Status.UNAUTHORIZED).build(); 
     } 
    return null; 
} 

Как вы можете видеть, я устанавливаю его на переменном ответ, и это есть. Но как только я перейду к защищенному методу, и активирует активацию AuthenticationFilter, я узнаю, что заголовок, который я получаю из requestContext, имеет значение null. Как я правильно отправил токен в этот заголовок в этой ситуации? Here's my full code

ответ

0

Заголовок должен быть включен клиентом, а не сервером. Общий поток этот

1) клиент проверяет подлинность вашей службы с учетными данными, то сервер создает маркер и возвращает его клиенту, который хранит маркер в безопасном хранении

2) клиент выполняет запрос и включить токен в заголовке.

POST/yourservice Авторизация: Канал thetoken

3) сервер проверяет заголовок, извлекает маркер и проверить его

Смежные вопросы