programing

파이어베이스에서 역할 기반 액세스 제어를 구현하려면 어떻게 해야 합니까?

closeapi 2023. 6. 25. 20:05
반응형

파이어베이스에서 역할 기반 액세스 제어를 구현하려면 어떻게 해야 합니까?

이것은 제가 Firebase & nosql에 처음으로 진출한 것입니다. 저는 SQL 출신입니다.

단순 로그인 보안 전자 메일/암호를 사용하여 Firebase에서 데이터에 대한 액세스를 제한하려면 어떻게 해야 합니까?예를 들어, 일부 사용자는 비즈니스 개체(사용자, 고객, 범주 등)를 만들 수 있는 액세스 권한을 갖지만 다른 사용자는 그렇지 않습니다.권한 목록을 "auth" 변수에 첨부할 수 있는 방법이 있습니까?

권한을 인증 변수에 직접 연결할 수 있는 방법은 없습니다(적어도 의도된 전략은 아닌 것 같습니다).다음과 같이 구성된 사용자 모음을 만드는 것이 좋습니다.auth.uid또한 보안 규칙이 다음과 같이 표시되도록(테스트되지 않은) 원하는 권한 특성을 유지할 수 있습니다.

{
  "rules": {
    ".read": true,
    "users": {
      ".write": "root.child('users').child(auth.uid).child('role').val() == 'admin'"
    }
  }
}

어디에role당신의 모든 객체에 속하는 속성입니다.users수집.

갱신하다

아래 설명을 참조하십시오.

"인증 변수에 직접 권한을 첨부할 수 있는 방법이 없습니다." 2017년에 변경되었습니다.이제 보안 규칙에서 사용할 수 있는 인증 프로파일에 사용자 지정 클레임을 연결할 수 있습니다.사용자 지정 클레임에 대한 자세한 내용은 Bojeil의 답변과 Firebase 설명서를 참조하십시오.프랭크 반 푸펠렌

Firebase는 ID 토큰에 대한 맞춤형 사용자 클레임을 통해 모든 사용자에 대한 역할 기반 액세스 지원을 시작했습니다. https://firebase.google.com/docs/auth/admin/custom-claims

관리 액세스 규칙을 정의할 수 있습니다.

{
  "rules": {
    "adminContent": {
      ".read": "auth.token.admin === true",
      ".write": "auth.token.admin === true",
    }
  }
}

Firebase Admin SDK를 사용하여 사용자 역할을 설정합니다.

// Set admin privilege on the user corresponding to uid.
admin.auth().setCustomUserClaims(uid, {admin: true}).then(() => {
  // The new custom claims will propagate to the user's ID token the
  // next time a new one is issued.
});

이것은 해당 사용자의 ID 토큰 클레임으로 전파됩니다.다음 작업 후 즉시 토큰을 강제로 새로 고칠 수 있습니다.user.getIdToken(true)

클라이언트의 토큰에서 구문 분석하려면 ID 토큰의 페이로드를 base64로 디코딩해야 합니다. https://firebase.google.com/docs/auth/admin/custom-claims#access_custom_claims_on_the_client

필요에 따라 사용자를 업그레이드/다운그레이드할 수 있습니다.또한 사용자의 액세스 수준을 변경하는 스크립트가 반복되는 경우 모든 사용자를 나열하는 프로그래밍 방식을 제공했습니다. https://firebase.google.com/docs/auth/admin/manage-users#list_all_users

1년 후에 이것을 다시 보는 것이 "커스텀 토큰"이 더 나은 선택일 수 있습니다.

https://www.firebase.com/docs/security/guide/user-security.html#section-custom

언급URL : https://stackoverflow.com/questions/19520615/how-do-i-implement-role-based-access-control-in-firebase

반응형