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에 누락 된 것이 있으면 알려주세요. 감사합니다!