我想僅使用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中缺少的東西,謝謝!