Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java和auth0:令牌签名无效异常_Java_Oauth 2.0_Jwt_Auth0_Rsa Sha256 - Fatal编程技术网

java和auth0:令牌签名无效异常

java和auth0:令牌签名无效异常,java,oauth-2.0,jwt,auth0,rsa-sha256,Java,Oauth 2.0,Jwt,Auth0,Rsa Sha256,我试图在java中改变jwt,我使用了与本文类似的代码: 但是我得到了一个错误:com.auth0.jwt.exceptions.SignatureReferenceException:Token的签名在使用算法进行验证时无效:SHA256withRSA我也看到了这篇文章:com.auth0.jwt.exceptions.SignatureReferenceException:Token的签名在使用算法进行验证时无效:SHA256带有RSA,但我没有使用HMAC256 虽然我可以得到jwt: E

我试图在java中改变jwt,我使用了与本文类似的代码:

但是我得到了一个错误:com.auth0.jwt.exceptions.SignatureReferenceException:Token的签名在使用算法进行验证时无效:SHA256withRSA我也看到了这篇文章:com.auth0.jwt.exceptions.SignatureReferenceException:Token的签名在使用算法进行验证时无效:SHA256带有RSA,但我没有使用HMAC256

虽然我可以得到jwt:

Eyjhbgiizizizizizizizizizizizizizizizizizizyzizizizizizizizizizizizizizizizizizizizizizizizizmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzmzyzyzyzmzmzyzyzyzmzmzmzmzmzmzyzmzmzmzyzyzmzmzmzyzmzmzmzmzmzyzyzmzmzmzmzmzyzyzyzyzyzyzyzyzyzyz2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2 2.2.2.2 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2 2.2 MGXX-1c4emw4t4pxhkqc4wuma0c2nscufj1zyz74bcebrtbb9y_2; qdvekga1vfwuic6pon7q83gqvwih580vwih60rricjl9fnk4mq


我无法访问私钥以检查jwt.io上的签名,因为它保存在一个不受我控制的identity server实例上,但是由于我对oauth的了解有限,我认为这不是问题。

您应该将。withIssuer(“auth0”)更改为您的真实颁发者“谢谢,我已经更改了它,但是我仍然得到相同的错误。这和这里的问题是一样的:是的。不过我现在已经整理好了。最初,我的程序中的键来自头文件,当我解析它时,两边都有空格。我认为这是一个新手错误。对我来说,这是我的jwksUrl和访问令牌URL不匹配。Jwks URL是用于验证公钥的URL,而访问令牌URL是从您请求令牌的位置发出的,它们都需要属于相同的环境。在我的例子中,我从stage环境获取令牌,但我的spring安全代码试图用指向dev环境的jwksUrl验证令牌。
    public void parseJWTKey(HttpHeaders header)
    {
        try
        {
            Jwk jwk = getPublicKey(); //method to retrieve public key from auth server (identity server)

            RSAPublicKey publicKey = (RSAPublicKey) jwk.getPublicKey();

            Algorithm alg = Algorithm.RSA256(publicKey, null);
            JWTVerifier verifier = JWT.require(alg)
                    .withIssuer("auth0")
                    .build();

            String headerString = header.toString();
            String parsedHeader = headerString.substring(headerString.indexOf(" "), headerString.lastIndexOf("\""));

            DecodedJWT dJwt = verifier.verify(parsedHeader);
        }
        catch(JWTVerificationException | JwkException | NullPointerException a)
        {
            a.printStackTrace();//TODO: Logging
        }
    }