2016-08-18 5 views
0

トークンベースの認証のチュートリアルとしてこのquestionの回答を使用しました。しかし、私はまだ認証ヘッダーを設定することに問題があります。あなたは、私が応答変数にそれを設定することだし、それがあるか見ることができるように私はベアラヘッダを設定しようとした私のauthenticateUserメソッドでベアラヘッダーをjax-rsに設定

は、ここでは番目のコード

@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)クライアントが実行中でトークンを格納し、クライアントにそれを返していますトークンをヘッダに含めます。ベアラthetoken

3)サーバは、ヘッダをチェックするトークンを抽出し、それを

を検証:POST /のYourService 認可

関連する問題