Saya dapat mengotorisasi akun layanan dengan membuat dan mengunduh kredensial.json di konsol GC. Tetapi opsi ini tidak tersedia untuk akun pengguna manusia yang sebenarnya. Akun pengguna saya memiliki peran tertentu yang ingin saya gunakan di dalam aplikasi dan perlu diautentikasi sebagai akun pengguna itu. Bagaimana saya bisa melakukannya? Apakah ada cara untuk mengunduh file creds.json serupa untuk akun pengguna?

0
Alex 5 Maret 2020, 01:30

1 menjawab

Jawaban Terbaik

Setelah beberapa penggalian dan sebagian berkat @JohnHanley, saya berhasil menggunakan perpustakaan oauth google-cloud untuk mengautentikasi aplikasi saya atas nama pengguna manusia yang memiliki izin yang tepat:

from google.cloud import secretmanager_v1beta1 as secretmanager
from google_auth_oauthlib import flow

SecretManagerAdminCreds = 'credentials.json'
LAUNCH_BROWSER = True


class SecretManagerAdmin:
    def __init__(self, project_id: str = "gcp_project_id",
                 scopes: list = ['https://www.googleapis.com/auth/cloud-platform']):
        self._scopes = scopes
        self._project_id = project_id

        appflow = flow.InstalledAppFlow.from_client_secrets_file(SecretManagerAdminCreds, scopes=self._scopes)

        if LAUNCH_BROWSER:
            appflow.run_local_server()
        else:
            appflow.run_console()

        authed_creds = appflow.credentials

        self.client = secretmanager.SecretManagerServiceClient(credentials=authed_creds)

Saat saya membuat instance kelas SecretManagerAdmin saya, browser akan aktif dan meminta pengguna untuk login ke google dan mengonfirmasi izin untuk aplikasi, dan mengembalikan set kredensial kedua yang kemudian digunakan untuk membuat instance klien Secretmanager, yang digunakan aplikasi .

2
sam 7 Maret 2020, 03:06