2015-09-28 39 views
1

我有要求爲wso2 API管理編寫自定義令牌驗證器類。我試圖擴展DefaultOAuth2TokenValidator類,將其轉換爲jar並放入/ repository/components/extensions。代碼片段在下面提到。爲WSO2 v1.9編寫自定義令牌驗證器類

import org.wso2.carbon.identity.oauth2.IdentityOAuth2Exception; 
import org.wso2.carbon.identity.oauth2.validators.DefaultOAuth2TokenValidator; 
import org.wso2.carbon.identity.oauth2.validators.OAuth2TokenValidationMessageContext; 


public class CustomTokenValidator extends DefaultOAuth2TokenValidator{ 

    public boolean validateAccessToken(OAuth2TokenValidationMessageContext arg0) 
      throws IdentityOAuth2Exception 
      { 
      System.out.println("CUSTOM VALIDATION INVOKED"); 
      return true; 
      } 

} 

添加以下爲下標籤的最後一個子項在/repository/conf/identity.xml

<TokenValidators> 
      <TokenValidator type="bearer" class="com.example.custom.token.generator.CustomTokenValidator"/> 
     </TokenValidators> 

我把所有丟失的罐子(類未發現異常,而重新啓動sevrer)在相同的位置,直到它拋出下面提到的錯誤。我很茫然。好心提醒。

[2015-09-24 12:52:36,287] INFO - AgentDS Successfully deployed Agent Client 
[2015-09-24 12:52:59,246] ERROR - RegistryConfigurationProcessor Could not initialize custom handlers. Caused by: org.wso2.carbon.apimgt.impl.handlers.APIConfigMediaTypeHandl 
e cast to org.wso2.carbon.registry.core.jdbc.handlers.Handler 
java.lang.ClassCastException: org.wso2.carbon.apimgt.impl.handlers.APIConfigMediaTypeHandler cannot be cast to org.wso2.carbon.registry.core.jdbc.handlers.Handler 
     at org.wso2.carbon.registry.core.config.RegistryConfigurationProcessor$HandlerDefinitionObject.invoke(RegistryConfigurationProcessor.java:967) 
     at org.wso2.carbon.registry.core.config.RegistryConfigurationProcessor.buildHandler(RegistryConfigurationProcessor.java:612) 
     at org.wso2.carbon.registry.core.config.RegistryConfigurationProcessor.initializeHandlers(RegistryConfigurationProcessor.java:564) 
     at org.wso2.carbon.registry.core.config.RegistryConfigurationProcessor.populateRegistryConfig(RegistryConfigurationProcessor.java:388) 
     at org.wso2.carbon.registry.core.config.RegistryContext.<init>(RegistryContext.java:468) 
     at org.wso2.carbon.registry.core.config.RegistryContext.<init>(RegistryContext.java:449) 
     at org.wso2.carbon.registry.core.config.RegistryContext.getBaseInstance(RegistryContext.java:328) 
     at org.wso2.carbon.registry.core.internal.RegistryCoreServiceComponent.getEmbeddedRegistryService(RegistryCoreServiceComponent.java:627) 
     at org.wso2.carbon.registry.core.internal.RegistryCoreServiceComponent.buildRegistryService(RegistryCoreServiceComponent.java:563) 
     at org.wso2.carbon.registry.core.internal.RegistryCoreServiceComponent.activate(RegistryCoreServiceComponent.java:117) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260) 
     at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) 
     at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347) 
     at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) 
     at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197) 
     at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343) 
     at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222) 
     at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861) 
     at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 
     at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433) 
     at org.wso2.carbon.user.core.internal.Activator.startDeploy(Activator.java:69) 
     at org.wso2.carbon.user.core.internal.BundleCheckActivator.start(BundleCheckActivator.java:61) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) 
     at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) 
     at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390) 
     at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1) 
     at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 
     at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) 
[2015-09-24 12:52:59,329] ERROR - RegistryContext Unable to get instance of the registry context 
org.wso2.carbon.registry.core.exceptions.RegistryException: Could not initialize custom handlers. Caused by: org.wso2.carbon.apimgt.impl.handlers.APIConfigMediaTypeHandler ca 
t to org.wso2.carbon.registry.core.jdbc.handlers.Handler 
     at org.wso2.carbon.registry.core.config.RegistryConfigurationProcessor.initializeHandlers(RegistryConfigurationProcessor.java:570) 
     at org.wso2.carbon.registry.core.config.RegistryConfigurationProcessor.populateRegistryConfig(RegistryConfigurationProcessor.java:388) 
     at org.wso2.carbon.registry.core.config.RegistryContext.<init>(RegistryContext.java:468) 
     at org.wso2.carbon.registry.core.config.RegistryContext.<init>(RegistryContext.java:449) 
     at org.wso2.carbon.registry.core.config.RegistryContext.getBaseInstance(RegistryContext.java:328) 
     at org.wso2.carbon.registry.core.internal.RegistryCoreServiceComponent.getEmbeddedRegistryService(RegistryCoreServiceComponent.java:627) 
     at org.wso2.carbon.registry.core.internal.RegistryCoreServiceComponent.buildRegistryService(RegistryCoreServiceComponent.java:563) 
     at org.wso2.carbon.registry.core.internal.RegistryCoreServiceComponent.activate(RegistryCoreServiceComponent.java:117) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260) 
     at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) 
     at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347) 
     at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) 
     at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197) 
     at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343) 
     at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222) 
     at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861) 
     at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 
     at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433) 
     at org.wso2.carbon.user.core.internal.Activator.startDeploy(Activator.java:69) 
     at org.wso2.carbon.user.core.internal.BundleCheckActivator.start(BundleCheckActivator.java:61) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) 
     at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) 
     at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390) 
     at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1) 
     at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 
     at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) 
Caused by: java.lang.ClassCastException: org.wso2.carbon.apimgt.impl.handlers.APIConfigMediaTypeHandler cannot be cast to org.wso2.carbon.registry.core.jdbc.handlers.Handler 
     at org.wso2.carbon.registry.core.config.RegistryConfigurationProcessor$HandlerDefinitionObject.invoke(RegistryConfigurationProcessor.java:967) 
     at org.wso2.carbon.registry.core.config.RegistryConfigurationProcessor.buildHandler(RegistryConfigurationProcessor.java:612) 
     at org.wso2.carbon.registry.core.config.RegistryConfigurationProcessor.initializeHandlers(RegistryConfigurationProcessor.java:564) 
     ... 44 more 
[2015-09-24 12:52:59,416] ERROR - RegistryCoreServiceComponent Failed to activate Registry Core bundle 
java.lang.NullPointerException 
     at org.wso2.carbon.registry.core.internal.RegistryCoreServiceComponent.getEmbeddedRegistryService(RegistryCoreServiceComponent.java:629) 
     at org.wso2.carbon.registry.core.internal.RegistryCoreServiceComponent.buildRegistryService(RegistryCoreServiceComponent.java:563) 
     at org.wso2.carbon.registry.core.internal.RegistryCoreServiceComponent.activate(RegistryCoreServiceComponent.java:117) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260) 
     at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) 
     at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347) 
     at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) 
     at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197) 
     at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343) 
     at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222) 
     at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861) 
     at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 
     at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) 
     at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433) 
     at org.wso2.carbon.user.core.internal.Activator.startDeploy(Activator.java:69) 
     at org.wso2.carbon.user.core.internal.BundleCheckActivator.start(BundleCheckActivator.java:61) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) 
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) 
     at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) 
     at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390) 
     at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438) 
     at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1) 
     at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 
     at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) 
[2015-09-24 12:52:59,507] INFO - UserStoreMgtDSComponent Carbon UserStoreMgtDSComponent activated successfully. 
[2015-09-24 12:53:08,068] INFO - TaglibUriRule TLD skipped. URI: http://tiles.apache.org/tags-tiles is already defined 

回答

0

您必須將JAR文件放入<WSO2_AM>/repository/components/lib目錄。

+0

嗨@AbimaranKugathasan - 我們嘗試了你指定的方式並將jar複製到lib文件夾。結果仍然是一樣的。我們做錯了什麼,或者我們使用的是不合適的版本?以下是我們已複製到組件庫的jar列表:amber_0.22.1358727.wso2v5.jar CustomTokenValidator.jar org.wso2.carbon.apimgt.impl_1.2.4.jar org.wso2.carbon.identity.base_4。 2.6.jar org.wso2.carbon.identity.oauth_4.2.6.jar org.wso2.carbon.registry.core_4.2.0.jar –

+0

您需要將驗證程序jar CustomTokenValidator.jar複製到lib目錄。其他已經與APIM一起交付。僅供參考,API Manager 1.9.1發佈,但有一些小錯誤修復。 –

+0

嗨@AbimaranKugathasan - 已成功部署,我的類正在調用,但仍然無法繞過令牌驗證。什麼是我返回的標記布爾值是真的,所以我相信,即使在無效標記的情況下,我的API調用應該會通過,但是這不會發生。有以下消息:錯誤 - AMDefaultKeyManagerImpl無效的OAuth令牌:無效的輸入。訪問令牌驗證失敗 –