2011-08-16 7 views
5

자바 웹 서비스, 다른 사용자에게 다른 메소드를 노출 할 수 있습니까?자바 웹 서비스 - 사용자가 웹 메소드를 보안

예를 들어 웹 서비스에는 10 가지 방법이 있지만 사용자 A는 1 또는 2 가지 방법으로 만 액세스 할 수 있습니다. 어떻게 수행 할 수 있습니까?

+0

이 서비스는 REST 웹 서비스입니까? SOAP 하나? – ElenaT

+0

@ 엘레나 (ElenaT) 이것은 SOAP 웹 서비스입니다. –

답변

1

사용자로부터 메소드를 완전히 숨길 수 없다고 생각합니다. 당신이 할 수있는 유일한 일은 특정 사용자에게 필요한 정보만을 제공하는 것입니다. 내 응용 프로그램에서 디자인 패턴 장식을 사용하여이 기능을 구현했습니다. 나는 그것을 설명하려고 노력할 것이다.

웹 서비스가 아닌 클래스에서이 논리를 분리 할 수 ​​있습니다. 2 개의 웹 서비스를 생성하십시오 (각 userAccess 모델에 하나씩). 각 웹 서비스에서 분리 된 로직을 호출하십시오.

메소드 1 ~ 10을 포함하는 CommonA 클래스를 작성했다고 가정 해보십시오. 웹 서비스 작성하기 ForUserA에는 CommonA의 메소드 1과 2를 호출하는 메소드 1과 2 만 들어 있습니다. 등등.

누구든지 더 나은 방법을 제안한다면 큰 즐거움이 될 것입니다.

1

귀하의 웹 서비스가 현재 귀하의 웹 서비스 방법을 호출하는 사용자를 결정하려면 인증이 필요합니다.

모두 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."); 
}