[英]How to set custom claims with FirebaseUser?
我正在嘗試向自定義聲明添加一些鍵值對,但找不到任何功能。 你如何在Android上做到這一點?
例如,我可以這樣設置顯示照片:
FirebaseUser user = ...;
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setPhotoUri(Uri.parse(response.body().getPhotoURI()))
.build();
user.updateProfile(profileUpdates).addOnCompleteListener(task -> { ... });
Client SDK 存在風險,因為惡意客戶端也可以修改數據。 可能現在可以在控制台中添加聲明,我不確定。 這可能就是您要尋找的東西。 從使用 Firebase Auth 自定義聲明控制數據訪問:
將各種標准添加為自定義聲明聽起來可能是個好主意。 例如,您可能想要添加家庭住址、其他照片 URL 或個人資料描述。 但這不是定制聲明的設計目的。 地址等數據應存儲在數據庫中,因為它與身份驗證無關。 令牌不是個人資料!
自定義聲明可能包含敏感數據,因此它們只能由 Firebase Admin SDK 從特權服務器環境中設置。
// Set admin privilege on the user corresponding to uid. Map<String, Object> claims = new HashMap<>(); claims.put("admin", true); FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
下一次發布新的自定義聲明時,新的自定義聲明將傳播到用戶的 ID 令牌。
並使用它:
// Verify the ID token first. FirebaseToken decoded = FirebaseAuth.getInstance().verifyIdToken(idToken); if (Boolean.TRUE.equals(decoded.getClaims().get("admin"))) { // Allow access to requested admin resource. }
或作為客戶:
// Lookup the user associated with the specified uid. UserRecord user = FirebaseAuth.getInstance().getUser(uid); boolean claim = Boolean.parseBoolean(user.getCustomClaims().get("admin"));
您可能想閱讀以下內容: Firebase Custom Claim Java
無法直接在客戶端應用程序中設置自定義聲明。 這將被視為一個安全問題。 自定義聲明是一種靈活的安全機制,允許您授予用戶對后端資源的訪問權限。 如果用戶可以授予自己自定義聲明,那么它們將是一種無效的資源保護方法。
您應該使用 Firebase Admin SDK 在您控制的后端分配自定義聲明,並確保僅在您允許的特定情況下向用戶授予聲明 - 用戶不應能夠為自己分配自定義聲明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.