簡體   English   中英

Java Web 服務 - 用戶安全 web 方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM