Bagaimana cara menghasilkan token di google sheets?

Halaman ini menjelaskan beberapa cara untuk memperoleh token ID OpenID Connect (OIDC) bertanda tangan Google. Anda memerlukan token ID yang ditandatangani Google untuk kasus penggunaan autentikasi berikut

Untuk informasi tentang konten dan masa pakai token ID, lihat

Token ID memiliki layanan atau aplikasi khusus yang dapat digunakan untuk itu, ditentukan oleh nilainya. Halaman ini menggunakan istilah layanan target untuk merujuk ke layanan atau aplikasi yang dapat digunakan untuk mengautentikasi token ID

Saat Anda mendapatkan token ID, Anda dapat memasukkannya ke dalam header Authorization dalam permintaan ke layanan target

Metode untuk mendapatkan token ID

Ada berbagai cara untuk mendapatkan token ID. Halaman ini menjelaskan metode berikut

Cloud Run dan Cloud Functions menyediakan cara khusus layanan untuk mendapatkan token ID. Untuk informasi lebih lanjut, lihat

Jika Anda memerlukan token ID untuk diterima oleh aplikasi yang tidak dihosting di Google Cloud, Anda mungkin dapat menggunakan metode ini. Namun, Anda harus menentukan token ID apa yang diklaim oleh aplikasi tersebut

Dapatkan token ID dari server metadata

Saat kode Anda berjalan pada sumber daya yang dapat memiliki , server metadata untuk layanan terkait biasanya dapat menyediakan token ID. Server metadata menghasilkan token ID untuk akun layanan terlampir. Anda tidak bisa mendapatkan token ID berdasarkan kredensial pengguna dari server metadata

Anda bisa mendapatkan token ID dari server metadata saat kode Anda berjalan di layanan Google Cloud berikut

Cloud Build menyertakan server metadata, tetapi tidak mengembalikan token ID

Untuk mengambil token ID dari server metadata, Anda menanyakan titik akhir identitas untuk akun layanan, seperti yang ditampilkan dalam contoh ini

keriting

Ganti

$value = (Invoke-RestMethod `
  -Headers @{'Metadata-Flavor' = 'Google'} `
  -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
$value
0 dengan URI untuk layanan target, misalnya
$value = (Invoke-RestMethod `
  -Headers @{'Metadata-Flavor' = 'Google'} `
  -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
$value
1

curl -H "Metadata-Flavor: Google" \
  'http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE'

PowerShell

Ganti

$value = (Invoke-RestMethod `
  -Headers @{'Metadata-Flavor' = 'Google'} `
  -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
$value
0 dengan URI untuk layanan target, misalnya
$value = (Invoke-RestMethod `
  -Headers @{'Metadata-Flavor' = 'Google'} `
  -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
$value
1

$value = (Invoke-RestMethod `
  -Headers @{'Metadata-Flavor' = 'Google'} `
  -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
$value

Jawa

Untuk menjalankan contoh kode ini, Anda harus menginstal

sampel/cuplikan/src/main/Java/IdTokenFromMetadataServer. Jawa

Lihat di GitHub


import com.google.auth.oauth2.GoogleCredentials;
import com.google.auth.oauth2.IdTokenCredentials;
import com.google.auth.oauth2.IdTokenProvider;
import com.google.auth.oauth2.IdTokenProvider.Option;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;

public class IdTokenFromMetadataServer {

  public static void main(String[] args) throws IOException, GeneralSecurityException {
    // TODO(Developer): Replace the below variables before running the code.

    // The url or target audience to obtain the ID token for.
    String url = "https://example.com";

    getIdTokenFromMetadataServer(url);
  }

  // Use the Google Cloud metadata server to create an identity token and add it to the
  // HTTP request as part of an Authorization header.
  public static void getIdTokenFromMetadataServer(String url) throws IOException {
    // Construct the GoogleCredentials object which obtains the default configuration from your
    // working environment.
    GoogleCredentials googleCredentials = GoogleCredentials.getApplicationDefault();

    IdTokenCredentials idTokenCredentials =
        IdTokenCredentials.newBuilder()
            .setIdTokenProvider((IdTokenProvider) googleCredentials)
            .setTargetAudience(url)
            // Setting the ID token options.
            .setOptions(Arrays.asList(Option.FORMAT_FULL, Option.LICENSES_TRUE))
            .build();

    // Get the ID token.
    // Once you've obtained the ID token, you can use it to make an authenticated call to the
    // target audience.
    String idToken = idTokenCredentials.refreshAccessToken().getTokenValue();
    System.out.println("Generated ID token.");
  }
}
_

Pergi

auth/id_token_from_metadata_server. Pergilah

Lihat di GitHub

import (
	"context"
	"fmt"
	"io"

	"golang.org/x/oauth2/google"
	"google.golang.org/api/idtoken"
	"google.golang.org/api/option"
)

// getIdTokenFromMetadataServer uses the Google Cloud metadata server environment
// to create an identity token and add it to the HTTP request as part of an Authorization header.
func getIdTokenFromMetadataServer(w io.Writer, url string) error {
	// url := "http://www.example.com"

	ctx := context.Background()

	// Construct the GoogleCredentials object which obtains the default configuration from your
	// working environment.
	credentials, err := google.FindDefaultCredentials(ctx)
	if err != nil {
		return fmt.Errorf("failed to generate default credentials: %v", err)
	}

	ts, err := idtoken.NewTokenSource(ctx, url, option.WithCredentials(credentials))
	if err != nil {
		return fmt.Errorf("failed to create NewTokenSource: %v", err)
	}

	// Get the ID token.
	// Once you've obtained the ID token, you can use it to make an authenticated call
	// to the target audience.
	_, err = ts.Token()
	if err != nil {
		return fmt.Errorf("failed to receive token: %v", err)
	}
	fmt.Fprintf(w, "Generated ID token.\n")

	return nil
}

Node. js

sampel/idTokenFromMetadataServer. js

Lihat di GitHub

/**
 * TODO(developer):
 *  1. Uncomment and replace these variables before running the sample.
 */
// const url = 'http://www.example.com';

const {GoogleAuth} = require('google-auth-library');

async function getIdTokenFromMetadataServer() {
  const googleAuth = new GoogleAuth();
  const client = await googleAuth.getClient();

  // Get the ID token.
  // Once you've obtained the ID token, you can use it to make an authenticated call
  // to the target audience.
  await client.fetchIdToken(url);
  console.log('Generated ID token.');
}

getIdTokenFromMetadataServer();
_

Piton

Untuk menjalankan contoh kode ini, Anda harus menginstal Google Auth Python Library

sampel/klien-awan/cuplikan/idtoken_from_metadata_server. py

Lihat di GitHub


import google
import google.oauth2.credentials
from google.auth import compute_engine
import google.auth.transport.requests


def idtoken_from_metadata_server(url: str):
    """
    Use the Google Cloud metadata server in the Cloud Run (or AppEngine or Kubernetes etc.,)
    environment to create an identity token and add it to the HTTP request as part of an
    Authorization header.

    Args:
        url: The url or target audience to obtain the ID token for.
            Examples: http://www.abc.com
    """

    request = google.auth.transport.requests.Request()
    # Set the target audience.
    # Setting "use_metadata_identity_endpoint" to "True" will make the request use the default application
    # credentials. Optionally, you can also specify a specific service account to use by mentioning
    # the service_account_email.
    credentials = compute_engine.IDTokenCredentials(
        request=request, target_audience=url, use_metadata_identity_endpoint=True
    )

    # Get the ID token.
    # Once you've obtained the ID token, use it to make an authenticated call
    # to the target audience.
    credentials.refresh(request)
    # print(credentials.token)
    print("Generated ID token.")
_

Gunakan layanan penghubung untuk menghasilkan token ID

Beberapa layanan Google Cloud membantu Anda memanggil layanan lain. Layanan penghubung ini mungkin membantu menentukan kapan panggilan dibuat, atau mengelola alur kerja yang menyertakan panggilan layanan. Layanan berikut dapat secara otomatis menyertakan token ID, dengan nilai yang sesuai untuk klaim aud, saat mereka melakukan panggilan ke layanan yang memerlukan token ID

Pub/SubPub/Sub memungkinkan komunikasi asinkron antar layanan. Anda dapat mengonfigurasi Pub/Sub untuk menyertakan token ID dengan pesan. Untuk informasi lebih lanjut, lihat. Google TasksTasks memungkinkan Anda mengelola pelaksanaan tugas yang didistribusikan. Anda dapat mengonfigurasi tugas untuk menyertakan token ID atau token akses saat memanggil layanan. Untuk informasi lebih lanjut, lihat. Cloud Scheduler Cloud Scheduler adalah penjadwal tugas cron tingkat perusahaan yang dikelola sepenuhnya. Anda dapat mengonfigurasi Cloud Scheduler untuk menyertakan token ID atau token akses saat memanggil layanan lain. Untuk informasi selengkapnya, lihat Menggunakan autentikasi dengan Target HTTP

Buat token ID dengan meniru akun layanan

Peniruan akun layanan memungkinkan kepala sekolah menghasilkan kredensial jangka pendek untuk akun layanan tepercaya. Kepala sekolah kemudian dapat menggunakan kredensial ini untuk mengautentikasi sebagai akun layanan

Sebelum kepala sekolah dapat menyamar sebagai akun layanan, ia harus memiliki peran IAM pada akun layanan tersebut yang memungkinkan peniruan identitas. Jika prinsipal itu sendiri adalah akun layanan lain, mungkin akan lebih mudah untuk memberikan izin yang diperlukan secara langsung ke akun layanan tersebut, dan mengaktifkannya untuk menyamar sebagai dirinya sendiri. Konfigurasi ini, yang dikenal sebagai peniruan identitas diri, menciptakan kerentanan keamanan, karena memungkinkan akun layanan membuat token akses yang dapat disegarkan selamanya

Peniruan akun layanan harus selalu melibatkan dua pelaku. kepala sekolah yang mewakili penelepon, dan akun layanan yang ditiru, disebut akun layanan yang memiliki hak istimewa

Untuk menghasilkan token ID dengan menyamar sebagai akun layanan, ikuti langkah-langkah berikut

  1. Identifikasi atau menjadi akun layanan yang memiliki hak istimewa. Berikan akun layanan itu peran IAM yang diperlukan, pada layanan target

    • Untuk layanan Cloud Run, berikan peran Cloud Run Invoker (
      $value = (Invoke-RestMethod `
        -Headers @{'Metadata-Flavor' = 'Google'} `
        -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
      $value
      
      5)
    • Untuk Cloud Functions, berikan peran Cloud Functions Invoker (
      $value = (Invoke-RestMethod `
        -Headers @{'Metadata-Flavor' = 'Google'} `
        -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
      $value
      
      6)
    • Untuk layanan target lainnya, lihat dokumentasi produk untuk layanan tersebut
  2. Identifikasi prinsipal yang akan melakukan peniruan, dan siapkan Kredensial Default Aplikasi (ADC) untuk menggunakan kredensial untuk prinsipal ini

    Untuk lingkungan pengembangan, akun utama biasanya adalah akun pengguna yang Anda berikan ke ADC menggunakan gcloud CLI. Namun, jika Anda menjalankan sumber daya dengan akun layanan terlampir, akun layanan terlampir adalah yang utama

  3. Beri kepala sekolah peran yang diperlukan untuk meniru akun layanan yang memiliki hak istimewa

    Untuk petunjuk langkah demi langkah, lihat di dokumentasi IAM

  4. Gunakan IAM Credentials API untuk menghasilkan token ID untuk akun layanan resmi

    Untuk petunjuk langkah demi langkah, lihat

Hasilkan token ID menggunakan penyedia identitas eksternal

Membuat token ID menggunakan penyedia identitas eksternal menggunakan federasi identitas beban kerja, yang memungkinkan Anda menyiapkan hubungan antara Google Cloud dan penyedia identitas eksternal Anda. Anda kemudian dapat menggunakan kredensial yang disediakan oleh penyedia identitas eksternal untuk membuat token ID atau token akses yang dapat digunakan di Google Cloud

Untuk membuat token ID untuk kredensial yang diberikan dari penyedia identitas eksternal, ikuti langkah-langkah berikut

  1. Identifikasi atau berikan peran IAM yang diperlukan untuk memanggil layanan target

    Ini adalah praktik terbaik untuk membuat akun layanan khusus untuk tujuan ini, dan berikan peran yang diperlukan saja. Pendekatan ini mengikuti prinsip hak istimewa terkecil

  2. Identifikasi peran yang diperlukan untuk memanggil layanan target. Berikan peran ini ke akun layanan di layanan target

    • Untuk , berikan peran Cloud Run Invoker (
      $value = (Invoke-RestMethod `
        -Headers @{'Metadata-Flavor' = 'Google'} `
        -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
      $value
      
      5)
    • Untuk , berikan peran Cloud Functions Invoker (
      $value = (Invoke-RestMethod `
        -Headers @{'Metadata-Flavor' = 'Google'} `
        -Uri "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE")
      $value
      
      6)
    • Untuk layanan target lainnya, lihat dokumentasi produk untuk layanan tersebut
  3. Konfigurasikan federasi identitas beban kerja untuk penyedia identitas Anda seperti yang dijelaskan dalam Mengonfigurasi federasi identitas beban kerja

  4. Ikuti petunjuk di. Gunakan akun layanan yang Anda atur di langkah sebelumnya sebagai akun layanan yang akan ditiru

    Bagaimana cara mendapatkan token yang dihasilkan?

    Buat Token Akses Pribadi di GitHub .
    Arahkan ke pengaturan akun Git Anda, lalu Pengaturan Pengembang. Klik menu Token akses pribadi, lalu klik Buat token baru
    Pilih repo sebagai ruang lingkup. Token akan berlaku untuk semua tindakan yang ditentukan di repositori Anda
    Klik Hasilkan Token

    Bagaimana cara mendapatkan token Gdrive saya?

    Buat token akses untuk digunakan dalam aktivitas proses apa pun atau kontrol formulir dalam aplikasi. .
    Klik Bangun Aplikasi
    Di Penjelajah Aplikasi, di panel Aplikasi Saya, klik [Nama Aplikasi] > Sumber Daya Bersama > Token Akses
    Klik Baru
    Di layar Token Aplikasi Baru, pilih Google Drive
    Klik Berikutnya

    Apakah Google memiliki token?

    Google mendukung dua mekanisme untuk membuat pengenal unik. OAuth 2. 0 ID klien. Untuk aplikasi yang menggunakan OAuth 2. 0 untuk memanggil Google API, Anda dapat menggunakan OAuth 2. 0 ID klien untuk membuat token akses . Token berisi pengidentifikasi unik. Lihat Menyiapkan OAuth 2. 0 untuk informasi lebih lanjut.

    Apa itu token di Google?

    Token akses . Mereka digunakan untuk mengautentikasi dan memberikan informasi otorisasi ke Google API. contain authorization information, but not identity information. They are used to authenticate and provide authorization information to Google APIs.