wso2 IS 4.6中有效令牌的OAuth验证失败

wso2 IS 4.6中有效令牌的OAuth验证失败,oauth,wso2,wso2esb,wso2is,Oauth,Wso2,Wso2esb,Wso2is,我已经尝试通过使用wso2 Identity server 4.6创建自定义处理程序来保护rest API,它显示了无效的令牌,即使对于有效的令牌也是如此(stub.validate(dto).getValid()始终为false)但它在IS 4.5中运行良好。原因是什么? 请帮忙 登录是4.6 登录是4.5 您可能知道,OAuth访问令牌通过调用Identity Server中的OAuth2TokenValidationServiceweb服务进行验证。你能用SOAPUI试用一下这个服务吗。。

我已经尝试通过使用wso2 Identity server 4.6创建自定义处理程序来保护rest API,它显示了无效的令牌,即使对于有效的令牌也是如此<代码>(stub.validate(dto).getValid()始终为false)但它在IS 4.5中运行良好。原因是什么? 请帮忙

登录是4.6 登录是4.5
您可能知道,OAuth访问令牌通过调用Identity Server中的
OAuth2TokenValidationService
web服务进行验证。你能用SOAPUI试用一下这个服务吗。。。可以在(
https://{ip}:{port}/services/OAuth2TokenValidationService?WSDL
)找到WSDL。通常,当发送到此服务的web服务请求中不存在访问令牌时,会生成此错误

在请求消息正文中,必须如下所示

        <xsd1:accessToken>
           <xsd1:identifier>35d1538940ce9a1e86c0a287c521d14</xsd1:identifier>
           <xsd1:tokenType>bearer</xsd1:tokenType>
        </xsd1:accessToken>

35d1538940ce9a1e86c0a287c521d14
持票人
在代码中,“dto”对象可能未正确设置标识符值


另外,请从

中找到示例OAuth令牌验证客户端代码,您可能知道,OAuth访问令牌通过调用Identity Server中的
OAuth2TokenValidationService
web服务进行验证。你能用SOAPUI试用一下这个服务吗。。。可以在(
https://{ip}:{port}/services/OAuth2TokenValidationService?WSDL
)找到WSDL。通常,当发送到此服务的web服务请求中不存在访问令牌时,会生成此错误

在请求消息正文中,必须如下所示

        <xsd1:accessToken>
           <xsd1:identifier>35d1538940ce9a1e86c0a287c521d14</xsd1:identifier>
           <xsd1:tokenType>bearer</xsd1:tokenType>
        </xsd1:accessToken>

35d1538940ce9a1e86c0a287c521d14
持票人
在代码中,“dto”对象可能未正确设置标识符值


另外,请查找来自

的示例OAuth令牌验证客户端代码,我在Wso2 ESB 4.8.0中遇到了与OAuth中介器相同的问题,该中介器通过Oauth2验证web服务访问Wso2 Identity Server 4.6.0。对于Identity server 4.5.0,它可以正常工作。中介代码调用以普通字符串形式传递accessToken的客户端存根

验证服务返回的错误消息为:验证请求中不存在访问令牌标识符


要回答您的问题,您应该使用4.2.2版中的bundle
org.wso2.carbon.identity.oauth.stub
。它定义了一个类
org.wso2.carbon.identity.oauth2.stub.dto.OAuth2TokenValidationRequestDTO_OAuth2AccessToken
,该类应用作
OAuth2TokenValidationRequestDTO.setAccessToken
方法的参数。dto对象可以用作OAuth2TokenValidationServiceStub.validate方法的参数。

我在Wso2 ESB 4.8.0中遇到了同样的问题,即通过Oauth2验证web服务访问Wso2 Identity Server 4.6.0。对于Identity server 4.5.0,它可以正常工作。中介代码调用以普通字符串形式传递accessToken的客户端存根

验证服务返回的错误消息为:验证请求中不存在访问令牌标识符


要回答您的问题,您应该使用4.2.2版中的bundle
org.wso2.carbon.identity.oauth.stub
。它定义了一个类
org.wso2.carbon.identity.oauth2.stub.dto.OAuth2TokenValidationRequestDTO_OAuth2AccessToken
,该类应用作
OAuth2TokenValidationRequestDTO.setAccessToken
方法的参数。dto对象可以用作
OAuth2TokenValidationServiceStub.validate
方法的参数。

服务器控制台上是否打印了与此相关的调试/警告/错误日志?如果没有,假设您使用的是OAuth2.0,请尝试通过在/repository/conf/log4j.properties文件中添加以下行来启用日志记录:log4j.logger.org.wso2.carbon.identity.OAuth2=TRACE您必须重新启动服务器才能使其生效。是的,我也这样做了,并收到了以下调试消息:debug{org.wso2.carbon.identity.oauth2.validators.TokenValidationHandler}-验证请求中不存在访问令牌标识符。我已使用is 4.5和4.6中的日志更新了问题。请检查..是否有与此相关的调试/警告/错误日志打印在服务器控制台上?如果没有,假设您使用的是OAuth2.0,请尝试通过在/repository/conf/log4中添加以下行来启用日志记录j、 属性文件:log4j.logger.org.wso2.carbon.identity.oauth2=TRACE您必须重新启动服务器才能使其生效。是的,我做了相同的操作,并收到以下调试消息:debug{org.wso2.carbon.identity.oauth2.validators.TokenValidationHandler}-验证请求中不存在访问令牌标识符。我已使用is 4.5和4.6中的日志更新了问题。请检查..您好…Asela…服务中存在访问令牌,但它需要访问令牌中的标识符值。我已将is 4.6和4.5中的jar org.wso2.carbon.identity.oauth_4.2.2.jar进行了比较,发现IS 4.5中的访问令牌只是一个字符串变量,但IS 4.6中的访问令牌是一个对象,它需要该对象中的标识符值。如何将标识符值设置为访问令牌???是的..我尝试使用SOAP UI,此OAuth令牌验证客户端都可以正常工作。我猜您正在尝试使用存根类?i s请注意,“OAuth2TokenValidationRequestDTO”类包含一些带有“OAuth2AccessToken”对象的内部类。有时,这可能会导致问题无法处理生成的存根。是的,,,这里我创建了两个对象,一个外部类对象和一个内部类对象。我可以为OAuth2AccessToken对象设置标识符值(即内部类对象)。但现在存根中的validate方法无法将当前dto对象作为参数。我如何解决此问题?嗨…Asela…服务中存在Access token,但它需要Access token中的标识符值。我已经比较了jar org.wso2.carbon.identity.oauth_4.2.2.jar
        <xsd1:accessToken>
           <xsd1:identifier>35d1538940ce9a1e86c0a287c521d14</xsd1:identifier>
           <xsd1:tokenType>bearer</xsd1:tokenType>
        </xsd1:accessToken>