파이어베이스에서 역할 기반 액세스 제어를 구현하려면 어떻게 해야 합니까?
이것은 제가 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
'programing' 카테고리의 다른 글
MongoDb에서 기본값을 현재 타임스탬프로 사용하여 날짜 필드를 만드는 방법은 무엇입니까? (0) | 2023.06.25 |
---|---|
다른 테이블 SUM의 환율로 가격을 변환하고 AVG를 얻습니다. (0) | 2023.06.25 |
vuex를 사용하는 다른 구성 요소에서 v-model의 값 변경 (0) | 2023.06.25 |
함수의 암시적 선언 '닫힘' (0) | 2023.06.25 |
Angular 8 애플리케이션에서 세션 스토리지 구현 (0) | 2023.06.20 |