Admin Auth API 소개

Firebase Admin SDK를 사용하면 자체 서버를 Firebase 인증과 통합할 수 있습니다. 또한 Firebase Admin SDK로 사용자를 관리하거나 인증 토큰을 관리할 수 있습니다. Admin SDK에는 다음과 같은 장점이 있습니다.

사용자 관리

Firebase 사용자 관리를 위해 매번 Firebase Console에 접속하는 것은 번거로울 수 있습니다. 관리자용 사용자 관리 API는 이러한 사용자에게 프로그래매틱 액세스를 제공합니다. 그뿐만 아니라 사용자의 전체 데이터 검색과 비밀번호, 이메일 주소, 전화번호 변경과 같이 Firebase Console에서는 불가능한 작업을 할 수 있습니다.

커스텀 인증

외부 사용자 시스템을 Firebase와 통합할 수 있습니다. 예를 들어 사용자 데이터베이스가 이미 있거나 Firebase 인증에서 기본적으로 지원하지 않는 타사 ID 공급업체와 통합해야 하는 경우가 있습니다.

이를 위해 사용자를 식별하는 임의의 클레임을 갖는 커스텀 토큰을 만들 수 있습니다. 클라이언트 애플리케이션에서 이러한 커스텀 토큰을 사용하여 Firebase 인증 서비스에 로그인하면 토큰의 클레임에 기술된 ID가 적용됩니다. 이 ID는 Cloud Storage 등의 다른 Firebase 서비스에 액세스하는 데 사용됩니다.

ID 확인

Firebase 인증의 기본적인 용도는 앱의 사용자를 식별하여 Cloud Storage 등의 다른 서비스에 대한 액세스를 제한하는 것입니다. 인증 서비스를 통해 내 서버에서 이러한 사용자를 식별할 수도 있습니다. 이렇게 하면 Firebase 인증으로 로그인한 사용자를 대신하여 안전하게 서버 측 로직을 수행할 수 있습니다.

이를 위해 Firebase 인증으로 로그인한 클라이언트 애플리케이션에서 ID 토큰을 검색하고 서버로 보내는 요청에 이 토큰을 포함할 수 있습니다. 서버는 ID 토큰을 확인하고 사용자를 식별하는 클레임(사용자의 uid, 로그인에 사용한 ID 공급업체 등)을 추출합니다. 서버는 사용자 대신 작업을 수행하는 데 이 ID 정보를 사용할 수 있습니다.

Firebase Admin SDK는 위와 같은 인증 작업을 할 수 있도록 사용자를 관리하고 커스텀 토큰을 생성하고 ID 토큰을 확인하는 기능을 제공합니다.

커스텀 사용자 클레임

경우에 따라서는 이메일/비밀번호, Google, Facebook, 전화 등 지원되는 Firebase 인증 제공업체 중 하나를 통해 이미 로그인한 사용자의 액세스를 세밀하게 제어해야 할 때가 있습니다. 커스텀 사용자 클레임과 애플리케이션 보안 규칙의 결합이 바로 이러한 기능을 제공합니다. 예를 들어 Firebase 인증의 이메일 및 비밀번호 제공업체를 통해 로그인한 사용자는 커스텀 클레임을 사용해 액세스 제어를 정의할 수 있습니다.

사용자 관리

Firebase Admin SDK는 더 많은 권한으로 Firebase 사용자를 관리하는 API를 제공합니다. 관리자용 사용자 관리 API를 활용하면 사용자의 기존 인증 정보 없이도 클라이언트 측 비율 제한과 무관하게 프로그래매틱 방식으로 사용자를 검색, 생성, 업데이트, 삭제할 수 있습니다.

사용자 관리

커스텀 토큰 생성

커스텀 토큰을 생성하는 기본적인 목적은 사용자가 외부 또는 기존 인증 메커니즘을 통해 인증하는 방법을 제공하는 것입니다. 이러한 메커니즘은 LDAP 서버와 같이 개발자가 관리하는 서버일 수도 있고, Instagram, LinkedIn과 같이 Firebase가 기본적으로 지원하지 않는 타사 OAuth 제공업체일 수도 있습니다.

Firebase Admin SDK에는 커스텀 토큰을 만드는 메서드가 내장되어 있습니다. 타사 JWT 라이브러리를 사용하여 어느 언어로든 프로그래매틱 방식으로 커스텀 토큰을 만들 수도 있습니다.

서버는 고유 식별자(uid)가 포함된 커스텀 토큰을 만들어 클라이언트 앱에 전달해야 하며, 클라이언트 앱은 이 토큰으로 Firebase에 로그인합니다. 커스텀 토큰 생성 프로세스에 대한 자세한 내용과 코드 샘플은 커스텀 토큰 만들기를 참조하세요.

커스텀 토큰 만들기

ID 토큰 확인

Firebase 클라이언트 앱이 백엔드 서버와 통신하는 경우 사용자 대신 서버 측 로직을 수행할 수 있도록 서버에 현재 로그인한 사용자를 식별해야 할 수 있습니다. 사용자가 Firebase 앱에 로그인할 때 Firebase에서 생성하는 ID 토큰으로 사용자를 안전하게 식별할 수 있습니다. ID 토큰은 OpenID Connect 사양을 준수하며 사용자를 식별하는 데이터와 함께 기타 프로필 및 인증 관련 정보를 포함합니다. 자체 백엔드에서 이러한 토큰을 전송, 확인, 검사할 수 있습니다. 이렇게 하면 현재 로그인한 사용자를 안전하게 식별하고 내 백엔드 리소스에 대한 권한을 부여할 수 있습니다.

Firebase Admin SDK에는 ID 토큰을 확인하는 메서드가 내장되어 있습니다. 타사 JWT 라이브러리를 사용하여 어느 언어로든 프로그래매틱 방식으로 ID 토큰을 확인할 수도 있습니다. ID 토큰 확인 프로세스에 대한 자세한 내용과 코드 샘플은 ID 토큰 확인을 참조하세요.

ID 토큰 확인

커스텀 사용자 클레임

Firebase Admin SDK를 사용하면 사용자 계정의 커스텀 속성을 설정할 수 있습니다. 커스텀 사용자 클레임으로 사용자에게 다양한 수준의 액세스 권한(역할)을 부여한 후 애플리케이션 보안 규칙에 적용하면 됩니다.

Firebase Admin SDK를 통해 사용자의 커스텀 클레임을 수정한 후 이를 ID 토큰으로 클라이언트 측의 인증된 사용자에 전파합니다. ID 토큰은 이러한 커스텀 클레임을 제공하는 신뢰할 수 있는 메커니즘으로서 모든 인증된 액세스에서 관련 요청을 처리하기 전에 ID 토큰의 유효성을 검사해야 합니다.

커스텀 클레임으로 액세스 제어