ssl - 谷歌登录网络应用程序但在身份验证中它给出了 SSL 异常错误

标签 ssl google-signin sslexception

我正在我的网络应用程序上开发谷歌登录。我已经在我的服务器上发送了 ID token ,然后我想验证 token 的完整性,但在身份验证中它在 GoogleIdTokenVerifier 中给出了 SSL 异常错误。我该如何解决它?

public class VerifyController {
         public static final String CLIENT_ID = "";
         private static final String APPLICATION_NAME = "";
         public static GoogleIdTokenVerifier verifier ;
         public static GoogleIdToken token;
         private static NetHttpTransport transport;
         private static JsonFactory mJFactory;

        public Result validate(@PathParam("id") String idtoken) {
            try{
            // TODO Auto-generated method stub
            System.out.println("IN validate");
            System.out.println(idtoken);
            transport = new NetHttpTransport();
            mJFactory = new GsonFactory();
            verifier = new GoogleIdTokenVerifier.Builder(transport, mJFactory)
                    .setAudience(Arrays.asList(CLIENT_ID))
                    .build();
            token = GoogleIdToken.parse(mJFactory, idtoken);
             GoogleIdToken token = GoogleIdToken.parse(mJFactory, idtoken);
                if (verifier.verify(token)) {
                  Payload payload = token.getPayload();
                  System.out.println(payload);
                  if (payload.getHostedDomain().equals(APPLICATION_NAME)
                      // If multiple clients access the backend server:
                       {
                    System.out.println("User ID: " + payload.getSubject());
                  } else {
                    System.out.println("Invalid Domain.");
                  }
                } else {
                  System.out.println("null ID token.");
                }
                return null;
            }catch(Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }

最佳答案

创建 GoogleIdTokenVerifier 对象时需要设置 Issuer

verifier = new GoogleIdTokenVerifier.Builder(transport, mJFactory)
                .setAudience(Arrays.asList(CLIENT_ID))
                .build(); //instead of this use below code

verifier = new GoogleIdTokenVerifier.Builder(transport, mJFactory)
                .setAudience(Arrays.asList(CLIENT_ID))
                .setIssuer("accounts.google.com")
                .build();

关于ssl - 谷歌登录网络应用程序但在身份验证中它给出了 SSL 异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32471227/

相关文章:

android - 如何以应用程序的默认语言设置 google api 对话框的文本

apache - 通过 F5 代理的子域流量未得到正确处理

PHP - HTTPS SSL 申请

ssl - Elasticsearch shield 使用 letsencrypt 设置 ssl

react-native - 如何在没有 Firebase 的情况下为 React Native App 设置 Google 登录?

ios - 如果被拒绝,Google 登录将崩溃

java - Android 应用、Android 8(.1)、90% 华为设备中的 ANR 和崩溃

java - 在java中哪里添加SSLException的证书?

classnotfoundexception - javax.net.ssl.SSLException : Server selected improper ciphersuite SSL_RSA_WITH_DES_CBC_SHA

c++ - 提升 ASIO : SSL handshake() never finishes