我書面方式與新澤西州一個RESTful Web服務,這是示例代碼:澤西HTTP認證:我如何訪問和澤西寧靜的URL中的HTTP認證?
@GET
@Produce(MediaType.APPLICATION_JSON)
public String findItems(){
...
}
和則findItem的網址爲localhost:8080 /項目 方法應該驗證HTTP認證信息(摘要或基本)的這個url在執行前,如何從一個url請求中首先訪問認證?
我書面方式與新澤西州一個RESTful Web服務,這是示例代碼:澤西HTTP認證:我如何訪問和澤西寧靜的URL中的HTTP認證?
@GET
@Produce(MediaType.APPLICATION_JSON)
public String findItems(){
...
}
和則findItem的網址爲localhost:8080 /項目 方法應該驗證HTTP認證信息(摘要或基本)的這個url在執行前,如何從一個url請求中首先訪問認證?
我不會把這個放在控制器本身中,而是放在你希望保護的資源類的com.sun.jersey.spi.container.ContainerRequestFilter中,但應該給你基本的想法。
@Context
private HttpServletRequest request;
@GET
@Produce(MediaType.APPLICATION_JSON)
public String findItems(){
String auth = request.getHeader("authorization");
if (auth != null) {
String basic_prefix = "Basic ";
if (auth.startsWith(basic_prefix)) {
String auth_data = new String(Base64.decode(auth.substring(basic_prefix.length())));
String [] user_and_key = auth_data.split(":", 2);
// user and password available here
} else {
// reject access
}
} else {
// reject access
}
}
通常情況下,認證由容器來處理,你只需要添加相應的約束web.xml中指出哪些URI就應該保護,需要什麼樣的權威性的。然後在球衣中,您可以從SecurityContext獲取角色和主體信息,您可以將其注入到資源中。
Thanks.and你能告訴我如何訪問摘要認證 – user996505