2012-01-25 7 views
3

私の顧客テーブルに基づいてHTTP認証を使用しています。ユーザーが認証されると、安らかなWebサービスが呼び出されます。しかし、WebサービスでHTTP認証(HttpRequestのヘッダデータ)にどのようにアクセスできますか? 私のコードは次のようになります。Glassfish 3.1.1:RESTfulなWebサービスでHTTP認証を取得する

@GET 
@Path("{id}") 
@Produces({"application/xml"}) 
public ObjectList read(@PathParam("id") Integer id) { 
... //how to get here the HTTP-Username and Password? 
} 

答えて

3

Principalし、その役割を取得するためには、クラス本体にまたはで@Context SecurityContextを注入しますメソッド入力パラメータ

import javax.ws.rs.core; 
// 
public ObjectList read(
    @PathParam("id") Integer id, 
    @Context SecurityContext sc) { 
    String principalUserName = sc.getUserPrincipal().getName(); 
    if (sc.isUserInRole("MyRole")) { 
     return new MyRoleResource(); 
    } else { 
     return new MyDefaultRoleResource(); 
    } 
} 
0

はこのようにあなたの方法に多くのパラメータを追加します。

import javax.ws.rs.HeaderParam; 

// ... 

public ObjectList read(
    @PathParam("id") Integer id, 
    @HeaderParam("user-agent") String userAgent, 
    @HeaderParam("X-auth-token") String authToken) ...