2013-02-19 3 views
3

Java JAX-RS를 사용하여 REST API를 구축 했으므로 API는 공개 될 것이며 OAuth 2.0에 의해 보호됩니다.Jax RS REST API - OAuth 2.0 및 제어 오리진

빌드중인 내부 프로젝트에서이 API를 사용할 계획이며 내 API이기 때문에이 API에 대한 호출을 사용자가 승인 할 것으로 기대하지 않습니다. 전화의 출처를 확인하기 위해 나는 새 필터를 구현할 수 있는지가 궁금

<!-- Exposing the facility service as a REST service --> 
<jaxrs:server id="restContainer" address="/"> 
    <jaxrs:serviceBeans> 
     .. services beans 
    </jaxrs:serviceBeans> 
    <jaxrs:providers> 
     <ref bean="oauthFilter"/> <-- filter to validate oauth 
     <ref bean="apiUsageFilter"/> <-- filter to check api usage (integrated with 3scale) 
     <ref bean="jacksonProvider" /> 
     <ref bean="exceptionMapper" /> 
    </jaxrs:providers> 
    <jaxrs:extensionMappings> 
     <entry key="json" value="application/json" /> 
     <entry key="xml" value="application/xml" /> 
     <entry key="html" value="text/html" /> 
    </jaxrs:extensionMappings> 
    <jaxrs:features> 
     <bean class="org.apache.cxf.feature.LoggingFeature"/> 
    </jaxrs:features> 
</jaxrs:server> 

을 : 지금

, 나는, 구성의 샘플을 토큰 액세스를 확인하고 내 OAuth를 제공에 대해 그것을 검증하기 위해 필터를 사용하고 있습니다 , 나열된 ip (s)/domain (s) 중 하나 인 경우 oauth를 생략하고 그렇지 않으면 oauth로 진행하십시오.

이러한 접근이 가능합니까? 좋은 연습일까요? 장점과 단점?

감사합니다.

+0

도움 말? :) 내가 가진 아이디어 중 하나는 oauth 상호 작용을 우회하여 API를 호출하는 특정 (미리 정의 된) 앱 ID (또는 클라이언트 ID라고도 함)를 허용하는 필터를 구현하는 것입니다. 하지만 호출자가 호출의 쿼리 문자열에 클라이언트 ID/비밀 ID를 지정해야하는 단점이 있습니다. 따라서 모바일 앱에서이 코드를 사용해야하는 경우 모든 개발자가 쉽게 알아볼 수 있으며 해당 ID를 사용하여 oauth를 우회 할 수 있습니다. 그리고이 클라이언트 ID/비밀 키를 숨기기 위해 프록시를 구현해야 할 것 같습니다. 누구든지 내 원래 질문에 대한 답변을 가지고 있다면 정말 고마워. :) –

답변

1

해결 방법은 간단합니다. OAuth 2.0 서버에 서버 대 애플리케이션의 클라이언트 권한 부여 및 모바일 앱 (백엔드가없는)의 리소스 소유자 자격증 자 권한 부여를 구현했습니다.