Oauth 2.0 WSO2身份服务器JWT承载
在此之后,我在WSO2 IS 5.3.0中安装并配置了JWT Grant Type 然后,我配置了一个服务提供者来启用OAuth/OpenID连接入站验证器。 我能够从javascript客户机对利用Oauth 2协议的用户进行身份验证,该协议具有开放id作用域,可以获得有效的JWT令牌(JWTToken) 最后,我尝试使用REST客户端并设置Content type=application/x-www-form-urlencoded向https://**/oauth2/token?grant_type=urn:ietf:params:oauth:grant type:jwt bearer&assertion=JWTToken发出POST请求 当我执行请求时,WSOIS服务器会请求用户名和密码。我能够通过此步骤,提供有效的clientId和clientSecret 不幸的是,此时服务器没有使用访问令牌进行回复,而是使用400个错误请求进行回复,并且在响应正文中写入“{”error_description:“解码租户域carbon.super的公共身份证书提供程序默认值时出错”,“error:“invalid_grant”}”Oauth 2.0 WSO2身份服务器JWT承载,oauth-2.0,wso2,jwt,access-token,wso2is,Oauth 2.0,Wso2,Jwt,Access Token,Wso2is,在此之后,我在WSO2 IS 5.3.0中安装并配置了JWT Grant Type 然后,我配置了一个服务提供者来启用OAuth/OpenID连接入站验证器。 我能够从javascript客户机对利用Oauth 2协议的用户进行身份验证,该协议具有开放id作用域,可以获得有效的JWT令牌(JWTToken) 最后,我尝试使用REST客户端并设置Content type=application/x-www-form-urlencoded向https://**/oauth2/token?grant_
我无法理解问题是我传递给服务器的JWT令牌还是证书存在一些问题。有什么帮助吗?好的。我想这应该对你有帮助 如果您从WSO2 Identity Server获取OpenID connect令牌并将其放入,您将看到OpenID connect的“iss”(颁发者)值为“”(如果您设置了主机名,请将localhost替换为您的主机名),这是WSO2 Identity Server的令牌端点 因此,当您将此令牌用作JWT承载授权时,为了验证签名,授权处理程序尝试检索具有issuer(iss)字段中给定名称的IDP(即WSO2 Identity Server的令牌端点)。由于找不到任何身份提供程序,它将检索没有任何证书的默认身份提供程序(注意,这是为了向后兼容而添加的虚拟IDP)。(您可以在$IS_HOME/repository/conf/identity/identity providers/default.xml下找到) 所以有两种方法可以解决这个问题
<Audiences>
<Audience>
${carbon.protocol}://${carbon.host}:${carbon.management.port}/oauth2/token
</Audience>
</Audiences>
${carbon.protocol}://${carbon.host}:${carbon.management.port}/oauth2/t奥肯
这将确保在用作JWT承载授权时,已发布的OpenID连接令牌的受众验证检查将通过。(即,JWT授权处理程序将验证令牌端点是否是所提供授权中的受众之一)我遵循了第一种方法,它工作得非常好。不幸的是,现在我出现了以下错误“没有一个访问群体值与令牌端点别名https://***************.cloudapp.azure.com:9443/oauth2/token匹配”,您能帮助我吗?非常感谢。我已经解决了identity.xml配置文件中的反注释问题,行${carbon.protocol}://${carbon.host}:${carbon.management.port}/oauth2/token