首页 文章

WSO2 ESB 4.8.0 - OAuth2处理程序类 - 依赖jars org.wso2.carbon.identity.oauth.stub-4.2.2.jar

提问于
浏览
0

我有一个自定义处理程序,它将使用OAuth2验证令牌,并在REST API配置中包含自定义处理程序 . 将自定义handler.jar复制到不包含的/ repository / components / libs目录(org.wso2.carbon.identity.oauth.stub-4.2.2.jar) . 当我使用OAuth访问令牌调用API时,获取下面的类未找到异常 .

java.lang.NoClassDefFoundError: org/wso2/carbon/identity/oauth2/stub/dto/OAuth2TokenValidationRequestDTO_OAuth2AccessToken
    at org.wso2.handler.SimpleOauthHandler.handleRequest(SimpleOauthHandler.java:61)
    at org.apache.synapse.rest.API.process(API.java:285)
    at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76)
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:63)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)
    at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:336)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:168)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.wso2.carbon.identity.oauth2.stub.dto.OAuth2TokenValidationRequestDTO_OAuth2AccessToken
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:455)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)

which is best way to include this dependent jar - org.wso2.carbon.identity.oauth.stub-4.2.2.jar?

2 回答

  • 0

    如果将IS 4.6.0与ESB 4.8.0一起用于oAuth授权,则必须面对此问题,因为ESB 4.8.0使用 org.wso2.carbon.identity.oauth.stub-4.2.1.jar

    如果要实现hanlder与IS 4.6.0一起使用,可以将处理程序创建为OSGi包,包括 org.wso2.carbon.identity.oauth.stub-4.2.2.jar 作为私有包 . 但这似乎不是一个好习惯 . (样品可在https://github.com/wenodpathirana/wso2-api-security-handlers.git找到)

    此外,如果您使用ESB 4.8.1与IS 4.6.0,您可以使用没有上述异常的处理程序,因为ESB 4.8.1使用 org.wso2.carbon.identity.oauth.stub-4.2.2.jar

  • 0

    这可能有两个原因......

    • AS org.wso2.carbon.identity.oauth.stub-4.2.2.jar 是一个OSGI包,因此您需要将此包放入 /repository/components/dropins . 通常,jar文件放在 lib 目录中,而不是OSGI包中

    • 您的服务器 org.wso2.carbon.identity.oauth.stub 中可能有一些其他jar文件暴露相同的类..如果请尝试删除它们 . 例如,您可以使用 Feature Manager 管理UI删除OAuth介体功能(OAuth介体功能已经填充 org.wso2.carbon.identity.oauth.stub jar文件 . )

相关问题