Oauth 2.0 WSO2身份服务器JWT承载

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_

在此之后,我在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”}”


我无法理解问题是我传递给服务器的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下找到)

所以有两种方法可以解决这个问题

  • 更改Identity Server的issuer值,以便它可以获取其常驻身份提供程序的证书

    为此,, 登录到管理控制台

  • 转到身份提供程序-->常驻-->入站身份验证配置-->OAuth2/OpenID连接配置-->设置 “身份提供者实体Id”值为LOCAL

  • 使用OpenID连接令牌(即令牌端点)的名称equal issuer value创建一个新的身份提供程序,并上载可用于验证OpenID连接令牌的公共证书 就个人而言,我更喜欢第一种解决方案:)

    更新:

    你还需要再做一次改变

    在identity.xml(位于repository/conf/identity下)中,取消注释以下行

    <Audiences> 
        <Audience>
            ${carbon.protocol}://${carbon.host}:${carbon.manag‌​ement.port}/oauth2/t‌​oken
        </Audience> 
    </Audiences>
    
    
    ${carbon.protocol}://${carbon.host}:${carbon.manag‌​ement.port}/oauth2/t‌​奥肯
    

    这将确保在用作JWT承载授权时,已发布的OpenID连接令牌的受众验证检查将通过。(即,JWT授权处理程序将验证令牌端点是否是所提供授权中的受众之一)

    我遵循了第一种方法,它工作得非常好。不幸的是,现在我出现了以下错误“没有一个访问群体值与令牌端点别名https://***************.cloudapp.azure.com:9443/oauth2/token匹配”,您能帮助我吗?非常感谢。我已经解决了identity.xml配置文件中的反注释问题,行${carbon.protocol}://${carbon.host}:${carbon.management.port}/oauth2/token