התקנה של SDK לאדמינים
במאמר הזה מוסבר איך להתקין את Identity Platform SDK לאדמינים. SDK לאדמינים מאפשר לכם לנהל את Identity Platform מסביבת שרת, ולבצע פעולות אדמין כמו העברת משתמשים, הגדרת טענות בהתאמה אישית והגדרת ספקי זהויות.
לפני שמתחילים
כדי להשתמש ב-SDK לאדמינים, צריך אפליקציית שרת שמריצה אחת מהמערכות הבאות:
| שפה | גרסת המסגרת המינימלית |
|---|---|
| Node.js | Node.js 8.13.0 ואילך |
| Java | Java 7 ומעלה (מומלץ Java 8 ומעלה) |
| Python | Python 2.7+ או 3.4+ (מומלץ להשתמש בגרסה 3.4+) |
| המשך | Go 1.9 ואילך |
| C# | .NET Framework 4.5+ או .NET Core 1.5+ |
בטבלה הבאה מפורטות התכונות שנתמכות בכל שפה של SDK:
המסוף
-
יוצרים חשבון שירות:
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
roles/iam.serviceAccountCreator) ואת תפקיד ה-IAM Project Admin (roles/resourcemanager.projectIamAdmin). איך מקצים תפקידים -
במסוף Google Cloud , נכנסים לדף יצירת חשבון שירות.
כניסה לדף Create service account - בוחרים את הפרויקט הרצוי.
-
כותבים שם בשדה Service account name. המסוף Google Cloud ממלא את השדה מזהה חשבון שירות בהתאם לשם הזה.
כותבים תיאור בשדה Service account description. לדוגמה:
Service account for quickstart. - לוחצים על Create and continue.
-
מקצים לחשבון השירות את התפקיד Other > Identity Toolkit Admin.
כדי להקצות את התפקיד, בוחרים באפשרות Other > Identity Toolkit Admin מהרשימה Select a role.
- לוחצים על Continue.
-
לוחצים על Done כדי לסיים ליצור את חשבון השירות.
חשוב לא לסגור את חלון הדפדפן, כי תשתמשו בו גם בשלב הבא.
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
-
יוצרים מַפְתח לחשבון השירות:
- במסוף Cloud, לוחצים על כתובת האימייל של חשבון השירות שיצרתם. Google Cloud
- לוחצים על Keys.
- לוחצים על Add key ואז על Create new key.
- לוחצים על Create. למחשב שלכם תתבצע הורדה של קובץ JSON עם המפתח.
- לוחצים על Close.
gcloud
-
מגדירים את האימות:
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
roles/iam.serviceAccountCreator) ואת תפקיד ה-IAM Project Admin (roles/resourcemanager.projectIamAdmin). איך מקצים תפקידים -
יוצרים את חשבון השירות:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
מחליפים את הערך
SERVICE_ACCOUNT_NAMEבשם שרוצים לתת לחשבון השירות. -
מקצים לחשבון השירות את התפקיד
roles/identitytoolkit.adminב-IAM:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/identitytoolkit.admin
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_NAME: השם של חשבון השירותPROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות
-
יוצרים את קובץ המַפְתח:
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את מה שכתוב בשדות הבאים:
FILE_NAME: שם לקובץ המַפְתחSERVICE_ACCOUNT_NAME: השם של חשבון השירותPROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
התקנת ה-SDK
Node.js
Node.js SDK לאדמינים זמין ב-npm. אם עדיין אין לכם קובץ package.json, אתם יכולים ליצור אותו באמצעות npm init. לאחר מכן, מתקינים את חבילת npm ושומרים אותה ב-package.json:
npm install firebase-admin --save
כדי להשתמש במודול באפליקציה, require אותו מכל קובץ JavaScript:
var admin = require('firebase-admin');
אם משתמשים ב-ES2015, אפשר import את המודול במקום זאת:
import * as admin from 'firebase-admin';
Java
Java Admin SDK מתפרסם ב-Maven Central Repository.
כדי להתקין את הספרייה, צריך להצהיר עליה כתלות בקובץ build.gradle:
dependencies {
implementation 'com.google.firebase:firebase-admin:6.11.0'
}
אם משתמשים ב-Maven כדי לבצע build לאפליקציה, אפשר להוסיף את יחסי התלות הבאים לקובץ pom.xml:
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>6.11.0</version>
</dependency>
Python
Python Admin SDK זמין באמצעות pip.
pip install --user firebase-admin
המשך
משתמשים בכלי go get כדי להתקין את Go Admin SDK לאדמינים:
go get firebase.google.com/go
C#
מתקינים את .NET Admin SDK באמצעות מנהל החבילות של .NET:
Install-Package FirebaseAdmin -Version 1.9.1
אפשר גם להתקין אותו באמצעות כלי שורת הפקודה dotnet:
dotnet add package FirebaseAdmin --version 1.9.1
אפשר גם להתקין אותו על ידי הוספת רשומה של הפניה לחבילה הבאה לקובץ .csproj:
<ItemGroup>
<PackageReference Include="FirebaseAdmin" Version="1.9.1" />
</ItemGroup>
אתחול ה-SDK באמצעות פרטי כניסה שמוגדרים כברירת מחדל
מוסיפים את הקוד הבא לאפליקציית השרת כדי לאתחל את SDK לאדמינים באמצעות פרטי ברירת המחדל:
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();
אתחול ה-SDK באמצעות קובץ מפתח של חשבון שירות
אפשר גם לציין באופן ידני קובץ מפתח של חשבון שירות:
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 = CredentialFactory.FromFile<ServiceAccountCredential>("path/to/serviceAccountKey.json").ToGoogleCredential(), });
אתחול של כמה אפליקציות
בדרך כלל, תרצו לאתחל רק אפליקציה אחת שמוגדרת כברירת מחדל. עם זאת, אתם יכולים גם ליצור כמה מופעים של אפליקציות, שלכל אחד מהם יש אפשרויות הגדרה ומצב אימות משלו.
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);
הגדרת היקפי הרשאות
אם אתם משתמשים במכונה וירטואלית ב-Compute Engine עם אישורי ברירת מחדל של אפליקציות Google לאימות, תצטרכו להגדיר את היקפי ההרשאות הנכונים.
Identity Platform דורש את היקפי הגישה userinfo.email ו-cloud-platform.
כדי לבדוק את היקפי הגישה הקיימים, מריצים את הפקודה הבאה:
gcloud compute instances describe [INSTANCE-NAME] --format json
הפקודה תחזיר מידע על חשבון השירות. לדוגמה:
"serviceAccounts": [
{
"email": "example.gserviceaccount.com",
"scopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/userinfo.email"
]
}
]
כדי לעדכן את היקפי הגישה, מפסיקים את מכונת ה-VM ומריצים את הפקודה הבאה:
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"
המאמרים הבאים
- אפשר לראות את קוד המקור ותיעוד נוסף של SDK לאדמינים ב-GitHub:
- העברת משתמשים קיימים אל Identity Platform
- ניהול ספקי SAML ו-OIDC באמצעות תוכנה
- ניהול דיירים ב-Identity Platform