Firebase JWT 인증(사용자 지정 JWT)
Firebase 인증 으로 관리 하는 JSON web token 사용자를 인증하도록 사용자 지정 인증 제공자를 구성할 수 있습니다.
시작하기 전에
Firebase 인증을 사용하려면 다음이 필요합니다.
인증이 구성된 Firebase 프로젝트입니다. 자세한 내용은 Firebase 인증 문서를 참조하세요.
아직 사용자 지정 JWT 인증을 사용하지 않는 App Services App입니다. 새 App Services App을 만드는 방법을 알아보려면 앱 생성을 참조하세요.
명령줄 인터페이스를 사용하는 경우 로컬 시스템에 App Services CLI를 설치하고 인증해야 합니다.
Admin API를 사용하는 경우 MongoDB Atlas Admin API 공개/비공개 키 쌍이 필요합니다. API 키에는 프로젝트 소유자 권한이 있어야 합니다.
사용자 지정 JWT 인증 제공자 구성하기
UI에서 사용자 지정 JWT 인증을 구성하거나 CLI 또는 관리 API를 사용하여 기본 구성 파일을 직접 수정하여 구성할 수 있습니다. 아래에서 선호하는 방법을 선택하세요.
왼쪽 탐색 메뉴에서 Authentication 을 클릭합니다. 그런 다음 Authentication Providers 탭 을 클릭하고 Custom JWT 제공자 를 선택합니다.
이제 사용자 정의 JWT 인증 제공자가 Firebase 프로젝트에서 작동하도록 구성할 수 있습니다.
토글을 클릭하여 제공자를 활성화합니다.
Verification Method을 Use a JWK URI로 설정합니다. JWK URI에 다음 URL을 지정합니다:
https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com Metadata Fields을(를) 정의하여 Firebase JWT의 데이터를 해당 App Services 사용자 계정에 매핑합니다.
메타데이터 필드는 필수 항목이 아닙니다. 하지만 Firebase JWT의 사용자 정보를 앱으로 가져오는 데 유용할 수 있습니다.
다음은 Firebase JWT에서 App Services 사용자로의 매핑입니다. 메타데이터 필드 문서에 따라 UI의 테이블에 그대로 추가하거나 원하는 대로 매핑을 수정할 수 있습니다.
경로필드 이름firebase.identities.email이메일firebase.sign-in_providersignInProvideruser_iduserIdemail_verified이메일 인증이메일이메일을(를)Audience Firebase 프로젝트 ID 로 설정합니다.
중요
대상을 Firebase 프로젝트 ID로 설정해야 합니다.
UI에서 선택 사항으로 레이블이 지정되어 있더라도 사용자 정의 JWT 제공자로 Firebase 프로젝트 ID를 사용하려면 Audience을(를) 반드시 설정해야 합니다.
변경 사항을 배포하려면 Save 를 클릭합니다.
다음 명령을 실행하여 --remote
값을 앱의 클라이언트 앱 ID 로 바꿉니다. 이렇게 하면 앱의 최신 구성 파일의 로컬 사본이 다운로드되고 앱과 동일한 이름을 사용하는 구성 파일 디렉토리 로 이동합니다.
appservices pull --remote "myapp-abcde" cd myapp
앱의 /auth/providers.json
파일 에 새 사용자 지정 JSON web token 인증 제공자 를 추가합니다. 다음 구성을 템플릿으로 사용하여 audience
값을 Firebase 프로젝트 ID 로 바꿉니다. 제공된 metadata_fields
를 그대로 사용하거나 메타데이터 필드 문서에 따라 원하는 대로 매핑을 수정할 수 있습니다.
{ "custom-token": { "name": "custom-token", "type": "custom-token", "disabled": false, "config": { "audience": ["<Your Firebase Project ID>"], "jwkURI": "https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com", "useJWKURI": true }, "secret_config": { "signingKeys": [] }, "metadata_fields": [ { "required": false, "name": "firebase.identities.email", "field_name": "emails" }, { "required": false, "name": "firebase.sign_in_provider", "field_name": "signInProvider" }, { "required": false, "name": "user_id", "field_name": "userId" }, { "required": false, "name": "email_verified", "field_name": "emailVerified" }, { "required": false, "name": "email", "field_name": "email" } ] } }
변경 사항을 /auth/providers.json
에 저장합니다. 그런 다음 업데이트된 구성 파일을 푸시하여 앱을 배포합니다.
appservices push
인증 제공자 생성 엔드포인트를 사용하여 앱에 새 사용자 지정 JWT 인증 공급자를 추가합니다.
다음 구성을 템플릿으로 사용합니다. 다음을 확인하세요.
앱의
$PROJECT_ID
및$APP_ID
지정Authorization
헤더에 관리자 API 액세스 토큰을 포함합니다.요청 본문의
audience
값을 Firebase 프로젝트 ID 로 바꿉니다.
제공된 metadata_fields
를 그대로 사용하거나 메타데이터 필드 문서에 따라 원하는 대로 매핑을 수정할 수 있습니다.
curl "https://services.cloud.mongodb.com/api/admin/v3.0/groups/$PROJECT_ID/apps/$APP_ID/auth_providers" \ -X "POST" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "custom-token", "type": "custom-token", "disabled": false, "config": { "audience": ["<Your Firebase Project ID>"], "jwkURI": "https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com", "useJWKURI": true }, "secret_config": { "signingKeys": [] }, "metadata_fields": [ { "required": false, "name": "firebase.identities.email", "field_name": "emails" }, { "required": false, "name": "firebase.sign_in_provider", "field_name": "signInProvider" }, { "required": false, "name": "user_id", "field_name": "userId" }, { "required": false, "name": "email_verified", "field_name": "emailVerified" }, { "required": false, "name": "email", "field_name": "email" } ] }'
Firebase JWT로 로그인
사용자 지정 JWT 인증 제공자가 Firebase 인증을 사용하도록 구성한 후에는 Firebase JWT를 사용하여 App Services App에 로그인할 수 있습니다.
사용자를 Firebase에 로그인합니다. 방법을 알아보려면 관련 Firebase SDK 문서 를 참조하세요. 플랫폼 및 프로그래밍 언어에 적합합니다.
사용자의 Firebase JSON web token 을 가져옵니다. 방법을 학습 보려면 클라이언트에서 ID 토큰 조회를 참조하세요. Firebase 문서에서 확인할 수 있습니다.
Firebase JWT를 사용하여 Atlas App Services로 인증합니다. HTTP를 통해 세션을 시작하거나 SDK로 로그인할 수 있습니다. 방법을 알아보려면 다음 SDK 관련 문서를 참조하세요.