[英]java- which way is easy to implement yet secure, for end user authentication in a web app/web service
[英]Java Web Service - Secure web methods by user
Java web 服務,是否可以將不同的方法暴露給不同的用戶?
例如,我的 web 服務中有 10 種方法,但我想只允許用戶 A 訪問 1 或 2 種方法,該怎么做?
我猜你不能完全隱藏用戶的方法。 您唯一能做的就是僅向特定用戶提供所需的信息。 在我的一個應用程序中,我使用裝飾設計模式實現了這一點。 我會試着解釋一下。
你可以在一些非webservice class 中分離這個邏輯。 創建 2 個 web 服務(每個用戶訪問模型一個)。 從每個 web 服務調用分離的邏輯。
假設您創建了包含方法 1 ~10 的 class CommonA。 創建 web 服務說 ForUserA 這包含方法 1 和 2 僅調用 CommonA 的方法 1 和 2。 等等。
如果有人提出更好的方法來做到這一點,那將是非常高興的。
為了讓您的 Web 服務確定當前哪個用戶正在調用您的 Web 服務方法,您需要某種身份驗證。
由於 SAOP 和 REST 都使用 HTTP 協議,因此您可以使用會話。 一旦您的客戶驗證了自己的身份,您就可以允許/拒絕他訪問您喜歡的任何網絡方法。
這是 SOAP 服務的簡單示例。
@Resource WebServiceContext wsContext;
MessageContext mc = wsContext.getMessageContext();
HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession();
String username = (String)session.getAttribute("username");
if(username.equals("userA") {
// Do your thing
} else {
throw new WebServiceException("Not allowed to access this method.");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.