【发布时间】:2018-10-24 17:17:02
【问题描述】:
我正在开始一个新项目,而 Firebase Auth 是身份验证的选择。这个想法是通过 Firebase Auth 创建/登录用户,然后使用 Firebase ID 令牌在我的后端进行身份验证(通过 Authentication 标头)。
在 Google Samples 中,这是我获取令牌的方式:
FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getIdToken(true)
.addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()) {
String idToken = task.getResult().getToken();
// Send token to your backend via HTTPS
// ...
} else {
// Handle error -> task.getException();
}
}
});
但是,正如您所见,这是一个异步调用,因为它会转到 Firebase 服务器以获取令牌。所以,每次对后端的 REST API 调用,我都需要运行上面的代码,因为我不知道令牌什么时候过期。
有没有更好的方法来使用 Firebase Auth 安全调用我的后端 REST API?还是使用 Firebase ID 令牌是最好的?如果是这样,我应该如何为每个 REST API 调用包装这个 id 令牌获取?
如果您以后有更好的方法来验证用户以调用 rest api,我会全力以赴。
【问题讨论】:
-
您的后端使用哪种技术编写?我想你也可以在那里修改代码?
-
@LeviAlbuquerque 后端也是新的。我们正在.net core 上编写它。同样,如果有任何其他技术可以更好地应对这种情况,我会全力以赴。
-
如果您的后端是 admin sdk 支持的后端之一,您可以以更简单的方式管理登录 firebase.google.com/docs/auth/admin/create-custom-tokens 但为此您需要一个 python,go,node。原生支持的 js 或 java 后端
-
也许我可以混合使用两种后端技术:.net core 和 go。你怎么看?
-
我认为这不明智。但是让我问你一个问题,你打算如何确认用户发送的 id 令牌?
标签: android api firebase firebase-authentication restful-authentication