2012-09-05 2 views
5

Apache CXF을 사용하여 Tomcat에 webservice를 배포했습니다. OAuth 2.0을 사용하여 웹 서비스 보안을 유지하려면 어떻게해야합니까?oAuth 2.0을 사용하여 apache cxf webservice (jax-ws)를 보호하는 방법

아래 URL을 살펴 보았지만 적절한 해결책을 찾지 못했습니다. 간단한 웹 서비스 용으로 oAuth 2.0을 구현하는 방법에 대한 실습 예제 또는 자습서?

원래 튜토리얼 링크 :

+2

JAX-WS (SOAP 웹 서비스)를 작성했지만 링크가 JAX-RS (REST Services)를 가리키고 있다는 제목에서, 나는 당신이 올바른 장소를 찾고 있지 않다고 생각한다. – jmhostalet

답변

0

나는 최근에 같은 문제에 직면했다. 상당한 양의 연구가 끝난 후에 나는 이것이 매우 복잡하다는 것을 발견했다.

는 이와 같이하여 SOAP 웹 서비스 호출에 필요한 "인증 헤더"를 첨부하는 것이 가능하다 :

Map<String, Object> req_ctx = ((BindingProvider)port).getRequestContext(); 
req_ctx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WS_URL); 

Map<String, List<String>> headers = new HashMap<String, List<String>>(); 
headers.put("key", Collections.singletonList("yourkey")); 
//... all other parameters required. 
req_ctx.put(MessageContext.HTTP_REQUEST_HEADERS, headers); 

요청은 다음과 같은 서버 측에서 확인할 수있다 :

MessageContext mctx = wsctx.getMessageContext(); 

//get detail from request headers 
    Map http_headers = (Map) mctx.get(MessageContext.HTTP_REQUEST_HEADERS); 
    List userList = (List) http_headers.get("key"); 
//... get other information required here 

그러면 요청을 확인할 수 있습니다. 보조 노트 그것은 내 연구 결과에서주의하는 것입니다


은 OAuth2를 단순히 API 보안을위한 매우 유용하지 않습니다 - 단순히 외부 사용으로부터 보호.

OAuth를 1로 추론

, 당신은 자신의 키를 사용하여 사용자를 확인하기 위해 인증을 사용할 수 있습니다. 요청에 성공적으로 서명했기 때문에 권한이 있음을 알았으므로 정보에 대한 액세스를 허용하게됩니다.

oAuth 2에서는 프로토콜에서 HTTPS를 사용해야합니다. 그런 다음 API로 애플리케이션 인증을 사용하지 않는 이유는 무엇입니까? oAuth 2가 원래 인증서 세트 (프로토콜의 목표)를 사용하여 타사 응용 프로그램에 액세스하는 데 매우 유용하다는 것을 알았습니다. 그러나이 작업을 수행해야하는 경우가 아니면 전체 oAuth를 구현할 필요가 없습니다 (다시 IMO). API 보안을 원하면 SSL과 키 또는 사용자 이름/암호 조합을 사용하십시오.


은 참조 :

관련 문제