【问题标题】:How to instantiate GoogleIdTokenVerifier properly / what does .setAudience() do?如何正确实例化 GoogleIdTokenVerifier / .setAudience() 做什么?
【发布时间】:2017-06-01 23:48:17
【问题描述】:

我的指导方针

如果遵循thisGoogle 关于在服务器端验证 Google-Account-Tokens 的文档,但我有点困惑。

我的问题

GoogleIdTokenVerifier googleIdTokenVerifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(), new JacksonFactory())
                                .setAudience(Collections.singletonList(CLIENT_ID))
                                .build();

在这段代码中,我发现transportjsonFactory 参数可以填充为new NetHttpTransport()new JacksonFactory() here。它还描述了如何获取AudienceString,但我无法弄清楚它的用途。我无法测试它,但我的问题是我是否可以在没有 .setAudience() 的情况下使用它,或者我是否需要它以及它的用途。

【问题讨论】:

标签: java android google-signin google-authentication


【解决方案1】:

.setAudience() 中,您必须传递所有客户端ID。您可以从Credentials Page 为您的客户获取ID。解释了here

感谢 @StevenSoneff

如果你没有掌握基本概念

对于您希望服务器接受的每个客户端,您需要在“开发者控制台”中创建一个项目。客户通过他们的“SHA-1”指纹来区分。例如,您可以有一个调试项目(将获取您的调试指纹)和一个发布项目。要使两者都工作,您必须将两个 `ID` 添加到服务器的 `GoogleIdTokenVerifier` 的 `.setAudience()`。

【讨论】:

    【解决方案2】:

    就我而言,如果您使用 Firebase 在 Android 或 iOS 上获取 id 令牌。您应该按照这些说明在后端服务器上进行验证。

    Verify ID tokens using a third-party JWT library

    对我来说,我使用Google OAuth Client 作为第三方库,所以它很容易使用。 但是和这个文档有点不同。

    Verify the Google ID token on your server side

    1. CLIENT_ID 是您的 Firebase 项目 ID。
    2. Issuer 必须设置为https://securetoken.google.com/<projectId>
    3. 需要使用GooglePublicKeysManager并调用setPublicCertsEncodedUrl设置为https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com
    GooglePublicKeysManager manager = new GooglePublicKeysManager.Builder(HTTP_TRANSPORT, JSON_FACTORY)
                    .setPublicCertsEncodedUrl(PUBLIC_KEY_URL)
                    .build();
    
    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(manager)
                    .setAudience(Collections.singletonList(FIREBASE_PROJECT_ID))
                    .setIssuer(ISSUER)
                    .build();
    

    如果您有多个发行者,则必须为每个发行者创建GoogleIdTokenVerifier

    【讨论】:

      猜你喜欢
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2018-02-05
      • 2019-11-03
      相关资源
      最近更新 更多