0

WSO2 API Manager で Surf OAuth をサード パーティのキー マネージャーとして使用しようとしています。https://docs.wso2.com/display/AM1100/Configuring+a+Third-Party+Key+Managerのドキュメントに従ってください

私の問題は、api-manager.xml に Surf OAuth の構成を追加すると、構成を読み取ろうとして WSO2 API Manager が NPE で失敗することです。CARBON_HOME や NPE のスローなど、いくつかのシステム プロパティで爆発しているように見えます。

WSO2 API Manager と Surf OAuth の統合で同様の問題に直面した人はいますか? ステップバイステップの指示に従っても機能しない理由に興味があります

ここに私の api-manager.xml 構成があります

    <APIKeyManager>
    <KeyManagerClientImpl>nl.surfnet.demo.SurfOAuthClient</KeyManagerClientImpl>
    <Configuration>
        <RegistrationEndpoint>http://myserver:8080/admin/resourceServer/101</RegistrationEndpoint>
        <AccessToken>4a3aa6a5-8f37-4267-8911-0e3049ccee86</AccessToken>
        <IntrospectionURL>http://myserver:8080/v1/tokeninfo</IntrospectionURL>
        <ConsumerKey>1ff100f0-3e10-43cc-af2f-129d6a638739</ConsumerKey>
        <ConsumerSecret>3a79061f-4fa9-4d4e-bb6b-3af38e6a6733</ConsumerSecret>
    </Configuration>
</APIKeyManager>

そしてスタックトレース

[2016-03-22 16:07:36,381] エラー - APIKeyMgtServiceComponent はキー管理サービスの初期化に失敗しました。
org.wso2.carbon.apimgt.api.APIManagementException: 構成の解析中に予期しないエラーが発生しました: /opt/wso2am-1.10.0/repository/conf/api-manager.xml
        org.wso2.carbon.apimgt.impl.APIManagerConfiguration.load (APIManagerConfiguration.java:112) で
        org.wso2.carbon.apimgt.keymgt.internal.APIKeyMgtServiceComponent.activate (APIKeyMgtServiceComponent.java:88) で
        sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で
        java.lang.reflect.Method.invoke(Method.java:606) で
        org.eclipse.equinox.internal.ds.model.ServiceComponent.activate (ServiceComponent.java:260) で
        org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate (ServiceComponentProp.java:146) で
        org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345) で
        org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent (InstanceProcess.java:620) で
        org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents (InstanceProcess.java:197) で
        org.eclipse.equinox.internal.ds.Resolver.getEligible (Resolver.java:343) で
        org.eclipse.equinox.internal.ds.SCRManager.serviceChanged (SCRManager.java:222) で
        org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged (FilteredServiceListener.java:107) で
        org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent (BundleContextImpl.java:861) で
        org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)で
        org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous (ListenerQueue.java:148) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged (ServiceRegistry.java:819) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent (ServiceRegistry.java:771) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
        org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)で
        org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451)で
        org.wso2.carbon.identity.thrift.authentication.internal.ThriftAuthenticationServiceComponent.activate (ThriftAuthenticationServiceComponent.java:110) で
        sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で
        java.lang.reflect.Method.invoke(Method.java:606) で
        org.eclipse.equinox.internal.ds.model.ServiceComponent.activate (ServiceComponent.java:260) で
        org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate (ServiceComponentProp.java:146) で
        org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345) で
        org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent (InstanceProcess.java:620) で
        org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents (InstanceProcess.java:197) で
        org.eclipse.equinox.internal.ds.Resolver.getEligible (Resolver.java:343) で
        org.eclipse.equinox.internal.ds.SCRManager.serviceChanged (SCRManager.java:222) で
        org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged (FilteredServiceListener.java:107) で
        org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent (BundleContextImpl.java:861) で
        org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)で
        org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous (ListenerQueue.java:148) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged (ServiceRegistry.java:819) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent (ServiceRegistry.java:771) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
        org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)で
        org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451)で
        org.wso2.carbon.core.init.CarbonServerManager.initializeCarbon (CarbonServerManager.java:514) で
        org.wso2.carbon.core.init.CarbonServerManager.start(CarbonServerManager.java:219) で
        org.wso2.carbon.core.internal.CarbonCoreServiceComponent.activate (CarbonCoreServiceComponent.java:94) で
        sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で
        java.lang.reflect.Method.invoke(Method.java:606) で
        org.eclipse.equinox.internal.ds.model.ServiceComponent.activate (ServiceComponent.java:260) で
        org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate (ServiceComponentProp.java:146) で
        org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345) で
        org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent (InstanceProcess.java:620) で
        org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents (InstanceProcess.java:197) で
        org.eclipse.equinox.internal.ds.Resolver.getEligible (Resolver.java:343) で
        org.eclipse.equinox.internal.ds.SCRManager.serviceChanged (SCRManager.java:222) で
        org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged (FilteredServiceListener.java:107) で
        org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent (BundleContextImpl.java:861) で
        org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)で
        org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous (ListenerQueue.java:148) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged (ServiceRegistry.java:819) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent (ServiceRegistry.java:771) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) で
        org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
        org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)で
        org.eclipse.equinox.http.servlet.internal.Activator.registerHttpService(Activator.java:81) で
        org.eclipse.equinox.http.servlet.internal.Activator.addProxyServlet(Activator.java:60)で
        org.eclipse.equinox.http.servlet.internal.ProxyServlet.init(ProxyServlet.java:40)
        org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.init (DelegationServlet.java:38) で
        org.apache.catalina.core.StandardWrapper.initServlet (StandardWrapper.java:1284) で
        org.apache.catalina.core.StandardWrapper.loadServlet (StandardWrapper.java:1197) で
        org.apache.catalina.core.StandardWrapper.load (StandardWrapper.java:1087) で
        org.apache.catalina.core.StandardContext.loadOnStartup (StandardContext.java:5262)​​ で
        org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5550) で
        org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) で
        org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) で
        org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) で
        java.util.concurrent.FutureTask.run (FutureTask.java:262) で
        java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) で
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) で
        java.lang.Thread.run(Thread.java:745) で
原因: java.lang.NullPointerException
        org.wso2.carbon.apimgt.impl.utils.APIUtil.replaceSystemProperty (APIUtil.java:3946) で
        org.wso2.carbon.apimgt.impl.APIManagerConfiguration.readChildElements (APIManagerConfiguration.java:160) で
        org.wso2.carbon.apimgt.impl.APIManagerConfiguration.readChildElements (APIManagerConfiguration.java:265) で
        org.wso2.carbon.apimgt.impl.APIManagerConfiguration.load (APIManagerConfiguration.java:92) で
        ... 83以上

4

1 に答える 1

0

ドキュメントで提供されている Surf-oauth クライアントの実装は、APIM の最新バージョン (1.10.0) ではサポートされていません。したがって、問題を解決するには、次の変更を行う必要があります。

  • SurfOAuthClient.java ファイルを変更して、org.wso2.carbon.apimgt.keymgt.AbstractKeyManager クラスの代わりに org.wso2.carbon.apimgt.impl.AbstractKeyManager クラスをインポートします。

    org.wso2.carbon.apimgt.impl.AbstractKeyManager をインポートします。

  • 次のように、pom.xml ファイルで「org.wso2.carbon.apimgt」グループ ID のバージョンを 5.0.3 に変更します。

    <dependency>
           <groupId>org.wso2.carbon.apimgt</groupId>
           <artifactId>org.wso2.carbon.apimgt.impl</artifactId>
           <version>5.0.3</version>
    </dependency>
    
    <dependency>
           <groupId>org.wso2.carbon.apimgt</groupId>
           <artifactId>org.wso2.carbon.apimgt.gateway</artifactId>
           <version>5.0.3</version>
    </dependency>
    
    <dependency>
           <groupId>org.wso2.carbon.apimgt</groupId>
           <artifactId>org.wso2.carbon.apimgt.keymgt</artifactId>
           <version>5.0.3</version>
    </dependency>
    
    <dependency>
           <groupId>org.wso2.carbon.apimgt</groupId>
           <artifactId>org.wso2.carbon.apimgt.hostobjects</artifactId>
           <version>5.0.3</version>
    </dependency>
    

また、固定コードについては [1] を参照してください。コードをビルドし、war ファイルと jar ファイルを生成します。現在の gateway.client-1.0.0.jar ファイルを /repository/components/lib および /repository/components/dropins フォルダーから削除し、生成された jar ファイルを /repository/components/lib フォルダーにコピーします。

生成された war ファイルを使用して、構成をやり直してください。

[1] https://github.com/jaadds/surf-oauth-demo/tree/v1.10.0

于 2016-05-02T05:09:03.087 に答える