Menginstal Admin SDK

Dokumen ini menunjukkan cara menginstal Identity Platform Admin SDK. Dengan Admin SDK, Anda dapat mengelola Identity Platform dari lingkungan server, dan melakukan tindakan administrator seperti memigrasikan pengguna, menetapkan klaim kustom, dan mengonfigurasi penyedia identitas.

Sebelum memulai

Untuk menggunakan Admin SDK, Anda memerlukan aplikasi server yang menjalankan salah satu dari berikut ini:

Language Versi framework minimum
Node.js Node.js 8.13.0+
Java Java 7+ (Java 8+ direkomendasikan)
Python Python 2.7+ atau 3.4+ (3.4+ direkomendasikan)
Go Gunakan 1,9+
C# .NET Framework 4.5+ atau .NET Core 1.5+

Tabel berikut mencantumkan fitur yang didukung oleh setiap bahasa SDK:

Fitur Node.js Java Python Go C#
Pembuatan token kustom
Verifikasi token ID
Pengelolaan pengguna
Mengontrol akses dengan klaim kustom
Pembaruan pencabutan token
Mengimpor pengguna
Pengelolaan cookie sesi
Membuat link tindakan email
Mengelola konfigurasi penyedia SAML/OIDC
Dukungan multi-tenancy
Realtime Database *
Firebase Cloud Messaging
Multicast FCM
Mengelola langganan topik FCM
Cloud Storage
Firestore
Pengelolaan Project
Aturan keamanan
Pengelolaan model ML
Firebase Remote Config
Firebase App Check
Firebase Extensions

Selain itu, Anda memerlukan akun layanan dan kunci untuk project Anda:

Konsol

Buat akun layanan:

  1. Di konsol Google Cloud, buka halaman Buat akun layanan.

    Buka Create service account
  2. Pilih project Anda.
  3. Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.

    Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh, Service account for quickstart.

  4. Klik Buat dan lanjutkan.
  5. Berikan peran Other > Identity Toolkit Admin ke akun layanan.

    Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih Other > Identity Toolkit Admin.

  6. Klik Lanjutkan.
  7. Klik Selesai untuk menyelesaikan pembuatan akun layanan.

    Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.

Membuat kunci akun layanan:

  1. Di konsol Google Cloud, klik alamat email untuk akun layanan yang telah dibuat.
  2. Klik Kunci.
  3. Klik Tambahkan kunci, lalu klik Buat kunci baru.
  4. Klik Create. File kunci JSON akan didownload ke komputer Anda.
  5. Klik Close.

gcloud

Menyiapkan autentikasi:

  1. Buat akun layanan:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Ganti SERVICE_ACCOUNT_NAME dengan nama untuk akun layanan.

  2. Berikan peran IAM Project > Admin ke akun layanan:

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=Project > Admin

    Ganti kode berikut:

    • SERVICE_ACCOUNT_NAME: nama dari akun layanan.
    • PROJECT_ID: project ID dimana Anda membuat akun layanan
  3. Membuat file kunci:

    gcloud iam service-accounts keys create FILE_NAME.json --iam-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    Ganti kode berikut:

    • FILE_NAME: nama untuk file kunci
    • SERVICE_ACCOUNT_NAME: nama dari akun layanan.
    • PROJECT_ID: project ID dimana Anda membuat akun layanan

Berikan kredensial autentikasi ke kode aplikasi Anda dengan menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS. Variabel ini hanya berlaku untuk sesi shell Anda saat ini. Jika Anda ingin variabel diterapkan ke sesi shell berikutnya, tetapkan variabel dalam file startup shell, misalnya dalam file ~/.bashrc atau ~/.profile.

Linux atau macOS

export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"

Ganti KEY_PATH dengan jalur file JSON yang berisi kredensial Anda.

Contoh:

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

Windows

Untuk PowerShell:

$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"

Ganti KEY_PATH dengan jalur file JSON yang berisi kredensial Anda.

Contoh:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

Untuk command prompt:

set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH

Ganti KEY_PATH dengan jalur file JSON yang berisi kredensial Anda.

Menginstal SDK

Node.js

Node.js Admin SDK tersedia di npm. Jika Anda belum memiliki file package.json, buat file menggunakan npm init. Selanjutnya, instal paket npm dan simpan ke package.json Anda:

npm install firebase-admin --save

Untuk menggunakan modul di aplikasi Anda, lakukan require dari file JavaScript mana pun:

var admin = require('firebase-admin');

Jika menggunakan ES2015, Anda dapat menerapkan import pada modul tersebut:

import * as admin from 'firebase-admin';

Java

Java Admin SDK dipublikasikan ke repositori pusat Maven. Untuk menginstal library tersebut, deklarasikan sebagai dependensi di file build.gradle Anda:

dependencies {
  implementation 'com.google.firebase:firebase-admin:6.11.0'
}

Jika menggunakan Maven untuk mem-build aplikasi, Anda dapat menambahkan dependensi berikut ke pom.xml:

<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-admin</artifactId>
  <version>6.11.0</version>
</dependency>

Python

Python Admin SDK tersedia menggunakan pip.

pip install --user firebase-admin

Go

Gunakan utilitas go get untuk menginstal Go Admin SDK:

go get firebase.google.com/go

C#

Instal .NET Admin SDK menggunakan pengelola paket .NET:

Install-Package FirebaseAdmin -Version 1.9.1

Sebagai alternatif, Anda dapat menginstalnya menggunakan aplikasi utilitas command line dotnet:

dotnet add package FirebaseAdmin --version 1.9.1

Atau, Anda dapat menginstalnya dengan menambahkan entri referensi paket berikut ke file .csproj Anda:

<ItemGroup>
  <PackageReference Include="FirebaseAdmin" Version="1.9.1" />
</ItemGroup>

Melakukan inisialisasi SDK menggunakan kredensial default

Tambahkan kode berikut ke aplikasi server Anda untuk menginisialisasi Admin SDK menggunakan kredensial default:

Node.js

// Initialize the default app
var admin = require('firebase-admin');
var app = admin.initializeApp({
  credential: admin.credential.applicationDefault()
});

Java

FirebaseApp.initializeApp();

Python

default_app = firebase_admin.initialize_app()

Go

app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
	log.Fatalf("error initializing app: %v\n", err)
}

C#

FirebaseApp.Create();

Melakukan inisialisasi SDK dengan file kunci akun layanan

Anda juga dapat menentukan file kunci akun layanan secara manual:

Node.js

// Initialize the default app
var admin = require('firebase-admin');
var app = admin.initializeApp({
  credential: admin.credential.cert('/path/to/serviceAccountKey.json')
});

Java

FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");

FirebaseOptions options = FirebaseOptions.builder()
    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
    .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
    .build();

FirebaseApp.initializeApp(options);

Python

import firebase_admin
from firebase_admin import credentials
from firebase_admin import exceptions

cred = credentials.Certificate('path/to/serviceAccountKey.json')
default_app = firebase_admin.initialize_app(cred)

Go

opt := option.WithCredentialsFile("path/to/serviceAccountKey.json")
app, err := firebase.NewApp(context.Background(), nil, opt)
if err != nil {
	log.Fatalf("error initializing app: %v\n", err)
}

C#

FirebaseApp.Create(new AppOptions()
{
    Credential = GoogleCredential.FromFile("path/to/serviceAccountKey.json"),
});

Melakukan inisialisasi beberapa aplikasi

Biasanya, Anda hanya perlu melakukan inisialisasi satu aplikasi default. Namun, Anda juga dapat membuat beberapa instance aplikasi, masing-masing dengan opsi konfigurasi dan status autentikasinya sendiri.

Node.js

// Initialize the default app
admin.initializeApp(defaultAppConfig);

// Initialize another app with a different config
var otherApp = admin.initializeApp(otherAppConfig, 'other');

console.log(admin.app().name);  // '[DEFAULT]'
console.log(otherApp.name);     // 'other'

// Use the shorthand notation to retrieve the default app's services
var defaultAuth = admin.auth();

Java

// Initialize the default app
FirebaseApp defaultApp = FirebaseApp.initializeApp(defaultOptions);

// Initialize another app with a different config
FirebaseApp otherApp = FirebaseApp.initializeApp(otherAppConfig, "other");

System.out.println(defaultApp.getName());  // "[DEFAULT]"
System.out.println(otherApp.getName());    // "other"

// Use the shorthand notation to retrieve the default app's services
FirebaseAuth defaultAuth = FirebaseAuth.getInstance();
FirebaseDatabase defaultDatabase = FirebaseDatabase.getInstance();

// Use the otherApp variable to retrieve the other app's services
FirebaseAuth otherAuth = FirebaseAuth.getInstance(otherApp);
FirebaseDatabase otherDatabase = FirebaseDatabase.getInstance(otherApp);

Python

# Initialize the default app
default_app = firebase_admin.initialize_app(cred)

#  Initialize another app with a different config
other_app = firebase_admin.initialize_app(cred, name='other')

print(default_app.name)    # "[DEFAULT]"
print(other_app.name)      # "other"

# Retrieve default services via the auth package...
# auth.create_custom_token(...)

# Use the `app` argument to retrieve the other app's services
# auth.create_custom_token(..., app=other_app)

Go

// Initialize the default app
defaultApp, err := firebase.NewApp(context.Background(), nil)
if err != nil {
	log.Fatalf("error initializing app: %v\n", err)
}

// Initialize another app with a different config
opt := option.WithCredentialsFile("service-account-other.json")
otherApp, err := firebase.NewApp(context.Background(), nil, opt)
if err != nil {
	log.Fatalf("error initializing app: %v\n", err)
}

// Access Auth service from default app
defaultClient, err := defaultApp.Auth(context.Background())
if err != nil {
	log.Fatalf("error getting Auth client: %v\n", err)
}

// Access auth service from other app
otherClient, err := otherApp.Auth(context.Background())
if err != nil {
	log.Fatalf("error getting Auth client: %v\n", err)
}

C#

// Initialize the default app
var defaultApp = FirebaseApp.Create(defaultOptions);

// Initialize another app with a different config
var otherApp = FirebaseApp.Create(otherAppConfig, "other");

Console.WriteLine(defaultApp.Name); // "[DEFAULT]"
Console.WriteLine(otherApp.Name); // "other"

// Use the shorthand notation to retrieve the default app's services
var defaultAuth = FirebaseAuth.DefaultInstance;

// Use the otherApp variable to retrieve the other app's services
var otherAuth = FirebaseAuth.GetAuth(otherApp);

Menetapkan cakupan

Jika menggunakan VM Compute Engine dengan Kredensial Default Aplikasi Google untuk autentikasi, Anda harus menetapkan cakupan akses yang tepat. Identity Platform memerlukan cakupan akses userinfo.email dan cloud-platform.

Untuk memeriksa cakupan akses yang ada, jalankan perintah berikut:

gcloud compute instances describe [INSTANCE-NAME] --format json

Perintah ini akan menampilkan informasi tentang akun layanan. Contoh:

"serviceAccounts": [
 {
  "email": "example.gserviceaccount.com",
  "scopes": [
   "https://www.googleapis.com/auth/cloud-platform",
   "https://www.googleapis.com/auth/userinfo.email"
   ]
  }
]

Untuk memperbarui cakupan akses, hentikan VM, lalu jalankan perintah berikut:


gcloud compute instances set-service-account [INSTANCE-NAME] \
  --service-account "your.gserviceaccount.com" \
  --scopes ""https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email"

Langkah selanjutnya