我想仅使用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>
的web.xml
<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>
我OAuthDataProviderImpl类扩展AbstractOAuthDataProvider并实现OAuthDataProvider和含有此方法:
@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 - 在对象org.apache.cxf.rs上调用方法public javax.ws.rs.core.Response org.apache.cxf.rs.security.oauth2.services.RedirectionBasedGrantService.authorize()。带有params []的[email protected]。
WARN oacjiWebApplicationExceptionMapper - javax.ws.rs.NotAuthorizedException:HTTP 401未授权
“>>>>> getClient” 没有出现在日志中,来自OAuthDataProviderImpl getClient()不应该是叫什么名字?
请让我知道如果从XML配置文件或web.xml中缺少的东西,谢谢!