2014-10-29 2 views
0

CXF 3에만 OAuth2 인증 서버 (리소스 없음)를 구현하고 싶습니다. 목표는 별도의 리소스 서버에서 사용할 수있는 토큰을 얻는 것입니다. 나는 이미 좋은 문서 나 튜토리얼을 찾기 위해 많은 시간을 보냈다. 여기 CXF를 사용하여 OAuth2 인증 서버 구현

는 지금까지 코드 것입니다 :
cxf.xml

<bean id="oauthProvider" class="com.mycompany.OAuthDataProviderImpl"/> 

<bean id="accessTokenService" class="org.apache.cxf.rs.security.oauth2.services.AccessTokenService"> 
    <property name="dataProvider" ref="oauthProvider"/> 
</bean> 

<bean id="authorizationService" class="org.apache.cxf.rs.security.oauth2.services.AuthorizationCodeGrantService"> 
    <property name="dataProvider" ref="oauthProvider"/> 
</bean> 

<jaxrs:server id="oauthServer" address="/oauth"> 
    <jaxrs:serviceBeans> 
     <ref bean="accessTokenService"/> 
     <ref bean="authorizationService"/>   
    </jaxrs:serviceBeans> 
</jaxrs:server> 

OAuthDataProviderImpl 클래스 AbstractOAuthDataProvider를 확장 및 구현 OAuthDataProvider 및 포함

<servlet> 
    <servlet-name>cxf</servlet-name> 
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>cxf</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

의 web.xml 이 방법 :

,
@Override 
public Client getClient(String clientId) throws OAuthServiceException { 
    // TODO Auto-generated method stub 
    System.out.println(">>>>> getClient"); 
    return null; 
} 

나는 서버를 실행하고로드하려고 할 때
/OAuth를 /인가? CLIENT_ID = 123456789 & 범위 = scopeTest7 & RESPONSE_TYPE = 코드 & redirect_uri로 = someUrl & 상태 = 1
나는 콘솔

에서 얻을

DEBUG oacsinvoker.AbstractInvoker - 메소드 호출하기 public org.apache.cxf.rs.security.oauth2.services.RedirectionBasedGrantService.authorize() 객체 org.apache.cxf.rs에 대해. [email protected] with params []. 401 권한

는 ">>>>> getClient는"로그에 표시되지 않습니다, OAuthDataProviderImpl에서 getClient()가 안되는 이 될 HTTP : javax.ws.rs.NotAuthorizedException -
은 oacjiWebApplicationExceptionMapper 경고 전화 했어?

감사합니다. xml 구성 파일 또는 web.xml에 누락 된 것이 있으면 알려주세요. 감사합니다!

답변

0

CXF OAuth2를 혼란에 빠뜨리고 있습니다. 그리고 HTTP 기본 인증 헤더를 보내지 않는 것 같습니다. 그러면 클라이언트 ID와 암호가 제공되는 것으로 요청이 거부됩니다.