我正在开发一个需要通过服务器应用程序进行身份验证的Android应用程序。该服务器应用程序是一个使用Spring Security的Sping Boot 应用程序。该服务器应用程序使用自定义身份验证提供程序为用户设置授权。
这是我用来检索idToken的代码:
FirebaseToken firebaseToken = null;
try {
FirebaseApp app = FirebaseUtil.getFirebaseApp();
firebaseToken = FirebaseAuth.getInstance(app).verifyIdTokenAsync(authenticationToken.getIdToken()).get();
} catch ( InterruptedException | ExecutionException | CancellationException e ) {
throw new AuthenticationServiceException(e.getMessage());
}
return firebaseToken;
一旦我有了Firebase令牌,我就可以像这样检索声明:
Map<String, Object> claims = token.getClaims();
然后,我可以遍历这些声明,并创建如下所示的权限:
List<GrantedAuthority> authorities = Lists.newArrayList();
authorities.add(new SimpleGrantedAuthority("some_role"));
我不知道如何使用Firebase控制台创建索赔。这可能吗?我怀疑我需要使用Firebase数据库,但在Firebase文档中找不到我要找的确切内容。
3条答案
按热度按时间lb3vh1jj1#
Firebase身份验证的自定义声明当前只能通过Firebase Admin SDK创建。
允许从控制台创建声明也是一个不错的主意,所以我建议您使用file a feature request。
flvtvl502#
您也可以使用Python轻松完成此操作:
zvms9eto3#
如果您一直在localhost上使用Firebase Emulator Suite,您可能已经注意到,您可以直接在该控制台中编辑用户以添加自定义声明,如{“role”:“admin”}。只需转到Authentication选项卡,单击特定用户的溢出菜单,选择“Edit User”,然后在文本框中设置自定义声明。
您可能在这里发现“Edit User”选项没有出现在生产版Firebase控制台中,因此您需要弄清楚如何对代码执行同样的操作。以下是我在Windows中使用Python、服务帐户和Firebase管理工具设置自定义声明所采取的步骤。在Linux或OSX上的步骤应该是相似的。这里假设您已经安装了python和pip。
1.从此处开始下载您的服务用户凭据。您将使用在步骤3中下载的文件。
1.从终端安装Python的firebase-admin工具(对于Linux或OSX,您可能需要在此命令前面加上sudo):
1.通过从命令行运行
python
打开python终端,并执行以下代码行: