1

我正在尝试验证 Google 发送到我的应用程序的 JWT 令牌。我正在使用以下代码验证 JWT 令牌,但即使令牌有效,verifier.verify(token) 也始终返回 null。我已经在我拥有的另一个 NodeJS 代码中测试了令牌,它在 NodeJS 中运行良好,但在下面的 java 代码中我无法验证令牌。感谢您让我知道为什么 verifier.verify(token) 返回 null 的任何帮助。

public static boolean isRequestFromGoogle(String audience, String token) {

    
         //HttpTransport httpTransport = checkNotNull(Utils.getDefaultTransport());
         //JsonFactory jsonFactory = checkNotNull(Utils.getDefaultJsonFactory());
         
         HttpTransport httpTransport = new NetHttpTransport();
            JsonFactory jsonFactory = new JacksonFactory();
        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(httpTransport,
                jsonFactory).setAudience(Collections.singletonList(audience)).build();

        try {
            System.out.println("token is " + token);
            System.out.println("verifier is " + verifier.toString());
            GoogleIdToken idToken = verifier.verify(token);
            if (idToken == null) {
                System.out.println("idToken is null");
                return false;
            }
            Payload payload = idToken.getPayload();
            String issuer = (String) payload.get("iss");
            String proj = (String) payload.get("aud");
            System.out.println("Issuer is" + issuer);
            System.out.println("Project is" + proj);

            return issuer.equals("https://accounts.google.com");
        } catch (GeneralSecurityException e) {
            
            e.printStackTrace();
        } catch (IOException e) {
            
            e.printStackTrace();
        }
        catch (Exception e) {
            e.printStackTrace();
        }

        return false;

    }
4

0 回答 0