如何将Firebase认证与Google应用引擎端点集成

17

我正在编写适用于移动应用的后端服务器。

后端运行在谷歌应用引擎上,使用Java编写。

我希望用户可以使用联合身份登录,例如Facebook。

我发现谷歌通过Firebase认证支持移动应用的此类身份验证。 如何将Firebase身份验证与我的当前应用程序引擎端点集成最佳?

我已经使用云平台数据存储,并且不希望使用Firebase数据库,只需使用身份验证方法即可。

谢谢。


请参见以下链接,了解如何在Google App Engine中使用Firebase身份验证:https://stackoverflow.com/questions/48564514/using-firebase-authentication-with-google-app-engine#48597008 - jimmont
2个回答

7
我也在寻找答案。到目前为止,我得出的最佳建议是:
  • 使用Firebase从控制台设置登录方法等
  • 使用Firebase UI(测试版)用于Web或“联合身份提供者集成”用于iOS / Android以设置身份验证流程
  • 在您的Web / iOS / Android客户端上检索令牌/身份验证详细信息,并将其作为HTTP请求标头传递给Cloud Endpoints
  • 将javax.servlet.http.HttpServletRequest注入到您的端点方法中(只需添加一个参数,Google会自动注入请求对象)
  • 创建一个方法,每个请求(需要身份验证)都将调用该方法,以处理您已通过HTTP请求标头传递的凭据的验证
  • 使用Firebase Java SDK调用Firebase以验证凭据(为此,您需要从Firebase控制台导出json配置),并使用它们加载SDK,例如,在您的servlet之一中:
@Override
    public void init(ServletConfig config) {
        try{
        InputStream in = config.getServletContext().getResourceAsStream("/WEB-INF/firebase-privatekey.json");
        FirebaseOptions options = new FirebaseOptions.Builder()
                .setServiceAccount(in)
                .setDatabaseUrl("YOUR_DATABASE_URL")
                .build();
        FirebaseApp.initializeApp(options);
        log.info("Authentication enabled");
        }
        catch(Throwable t) {
            t.printStackTrace();
            log.warning("AUTHENTICATION DISABLED. Only public resources will be available");
        }
    }

我使用类似的问题创建了一个新问题... https://dev59.com/CZrga4cB1Zd3GeqPiSXV - SmilingM

1

您应该能够将Google Cloud Endpoints用作您的应用程序前面的身份验证代理。通过配置您的OpenAPI模板,Endpoints支持验证Firebase身份验证令牌

# Configure Firebase as an AuthN provider
securityDefinitions:
    firebase:
      authorizationUrl: ""
      flow: "implicit"
      type: "oauth2"
      # Replace YOUR-PROJECT-ID with your project ID in the issuer and audiences fields
      x-google-issuer: "https://securetoken.google.com/YOUR-PROJECT-ID"
      x-google-audiences: "YOUR-PROJECT-ID"
      x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com"

# Add Firebase as an authN provider to specific endpoints...
security:
  - firebase: []

或者,您可以使用 Firebase Admin SDK编写身份验证中间件,验证您的令牌

FirebaseAuth.getInstance().verifyIdToken(idToken)
    .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
        @Override
        public void onSuccess(FirebaseToken decodedToken) {
            String uid = decodedToken.getUid();
            // ...
        }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接