0

我正在运行 wso2is 5.7 版并尝试实现基于 msf4j JWTAccessTokenBuilder 的 TokenGenerator。

我的 identity.xml 包括

<IdentityOAuthTokenGenerator>com.wso2.jwt.token.builder.JWTAccessTokenBuilder</IdentityOAuthTokenGenerator> <AccessTokenValueGenerator>org.wso2.carbon.identity.oauth.tokenvaluegenerator.SHA256Generator</AccessTokenValueGenerator>

当我登录时抛出异常

[2019-05-16 18:27:18,163] 错误 {org.apache.catalina.core.StandardWrapperValve} - servlet [OAuth2Endpoints] 的 Servlet.service() 在路径 [/oauth2] 的上下文中抛出异常 java.lang.RuntimeException : org.apache.cxf.interceptor.Fault: com/nimbusds/jwt/ReadOnlyJWTClaimsSet 在 org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)
在 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept( PhaseInterceptorChain.java:336)
在 org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
在 org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:249)
在 org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
...
在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
在 java。 lang.Thread.run(Thread.java:748) 引起:org.apache.cxf.interceptor.Fault:
com/nimbusds/jwt/ReadOnlyJWTClaimsSet
at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java :170)在 org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:204)在 org.apache.cxf
的 org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:136) 。 jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:101)


在 org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
在 org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94)
在 org.apache.cxf.phase.PhaseInterceptorChain。 doIntercept(PhaseInterceptorChain.java:272)
... 49 更多原因:java.lang.NoClassDefFoundError: com/nimbusds/jwt/ReadOnlyJWTClaimsSet
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors( Class.java:2671)
...
在 java.lang.reflect.Method.invoke(Method.java:498)
在 org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:188)
在 org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104)
... 54 更多原因: java.lang.ClassNotFoundException:JWTAccessTokenBuilder_2.7.4.SNAPSHOT 找不到 com.nimbusds.jwt.ReadOnlyJWTClaimsSet

任何人都可以给我一个提示吗?

4

2 回答 2

0

根据错误com.nimbusds.jwt.ReadOnlyJWTClaimsSet cannot be found by JWTAccessTokenBuilder_2.7.4.SNAPSHOT,这是由于 OSGi 类绑定。在 pom 的 maven-bundle-plugin 配置 Import-Package 中,确保您拥有com.nimbusds.jwt正确的版本范围。

或者快速修复是添加<DynamicImport-Package>*</DynamicImport-Package>

于 2019-05-17T14:11:47.697 回答
0

我发现了问题:我使用了旧版本的 org.wso2.carbon.identity.inbound.auth.oauth2 我将 pom.xml 更新为

<dependency>
      <groupId>org.wso2.carbon.identity.inbound.auth.oauth2</groupId>
      <artifactId>org.wso2.carbon.identity.oauth</artifactId>
      <version>6.0.172</version>
      <scope>provided</scope>
 </dependency>

来自https://mvnrepository.com并且必须更新代码以使用 wso2is 使用的 com.nimbusds.jwt 版本。最后,在服务提供商设置中,您必须选择 Token Issuer。

于 2019-06-06T07:59:54.687 回答