Pustaka Autentikasi Microsoft (MSAL) untuk Go

Note

Pustaka Autentikasi Microsoft (MSAL) untuk Go adalah tambahan baru untuk keluarga pustaka MSAL. Ini telah tersedia dalam pratinjau siap produksi untuk mengukur minat pelanggan dan untuk mengumpulkan umpan balik dari komunitas. Kami menyambut semua kontributor (lihat panduan kontribusi di repositori pustaka) untuk membantu kami meningkatkan pustaka.

Pustaka Autentikasi Microsoft (MSAL) untuk Go adalah bagian dari platform identitas Microsoft untuk pengembang. Ini memungkinkan Anda untuk memasukkan pengguna atau aplikasi dengan identitas Microsoft (akun Azure AD dan Microsoft) dan mendapatkan token untuk memanggil API seperti Microsoft Graph atau API Anda sendiri yang terdaftar di platform identitas Microsoft. Ini dibangun menggunakan protokol OAuth2 dan OpenID Connect standar industri.

Kode terbaru berada di cabang dev dalam repositori GitHub library.

Installation

Menyiapkan Go

Untuk menginstal Go, kunjungi tautan ini.

Menginstal MSAL Go

go get -u github.com/AzureAD/microsoft-authentication-library-for-go/

Penggunaan

Sebelum menggunakan MSAL Go, Anda harus mendaftarkan aplikasi Anda dengan platform identitas Microsoft.

Permukaan publik

API Publik pustaka dapat ditemukan di direktori berikut di bawah apps.

  • confidential - API aplikasi rahasia
  • public - API aplikasi publik
  • cache - Antarmuka cache yang dapat diimplementasikan untuk menyediakan penyimpanan kredensial cache persistensi
  • managedidentity - API Identitas Terkelola

Memperoleh token dengan MSAL Go mengikuti pola tiga langkah umum ini. Mungkin ada sedikit perbedaan untuk alur akuisisi token lainnya. Berikut adalah contoh dasar:

  1. MSAL memisahkan aplikasi klien publik dan rahasia. Jadi, Anda akan membuat instans PublicClientApplication dan ConfidentialClientApplication dan menggunakan ini sepanjang masa pakai aplikasi Anda.

    • Menginisialisasi klien publik:
    publicClientApp, err := public.New("client_id", public.WithAuthority("https://login.microsoftonline.com/Enter_The_Tenant_Name_Here"))
    
    • Menginisialisasi klien rahasia:
    // Initializing the client credential
    cred, err := confidential.NewCredFromSecret("client_secret")
    if err != nil {
        return nil, fmt.Errorf("could not create a cred from a secret: %w", err)
    }
    confidentialClientApp, err := confidential.New("client_id", cred, confidential.WithAuthority("https://login.microsoftonline.com/Enter_The_Tenant_Name_Here"))
    

    untuk menggunakan aplikasi Identitas Terkelola, lihat identitas terkelola

  2. MSAL dilengkapi dengan cache dalam memori. Menggunakan cache bersifat opsional, tetapi kami akan sangat merekomendasikannya.

    var userAccount public.Account
    accounts := publicClientApp.Accounts()
    if len(accounts) > 0 {
        // Assuming the user wanted the first account
        userAccount = accounts[0]
        // found a cached account, now see if an applicable token has been cached
        result, err := publicClientApp.AcquireTokenSilent(context.Background(), []string{"your_scope"}, public.WithSilentAccount(userAccount))
        accessToken := result.AccessToken
    }
    

    Jika tidak ada token yang cocok di cache, atau Anda memilih untuk melewati langkah ini, kirim permintaan ke Azure AD untuk mendapatkan token. Ada berbagai metode untuk memperoleh token berdasarkan jenis dan skenario aplikasi Anda. Di sini, kami mendemonstrasikan alur placeholder.

    result, err := publicClientApp.AcquireTokenByOneofTheActualMethods([]string{"your_scope"}, ...(other parameters depending on the function))
    if err != nil {
        log.Fatal(err)
    }
    accessToken := result.AccessToken
    

Anda dapat melihat aplikasi sampel pengembang tentang cara menggunakan MSAL Go dengan berbagai jenis aplikasi dalam berbagai skenario.

Rilis

Untuk daftar lengkap rilis pustaka, lihat bagian Rilis di repositori kode sumber pustaka.

Bantuan dan dukungan komunitas

Kami menggunakan Stack Overflow untuk bekerja dengan komunitas dalam mendukung Azure Active Directory dan SDK-nya, termasuk yang ini! Kami sangat menyarankan Anda mengajukan pertanyaan Anda di Stack Overflow. Anda juga dapat menelusuri pertanyaan yang ada untuk melihat apakah seseorang telah mengalami masalah sebelumnya. Silakan gunakan azure-ad-msal tag saat mengajukan pertanyaan Anda.

Jika Anda menemukan bug atau memiliki permintaan fitur, buka masalah baru di bagian Masalah .

Kirim umpan balik

Jika Anda memiliki umpan balik pustaka, pastikan untuk mengirimkan permintaan fitur dan laporan bug Anda di GitHub.

Pustaka keamanan

Pustaka ini mengontrol cara pengguna masuk dan mengakses layanan. Sebaiknya gunakan versi terbaru pustaka kami di aplikasi Anda jika memungkinkan. Kami menggunakan penerapan versi semantik sehingga Anda dapat mengontrol risiko yang terkait dengan pembaruan aplikasi Anda. Sebagai contoh, selalu mengunduh nomor versi minor terbaru (misalnya x.y.x) memastikan Anda mendapatkan peningkatan keamanan dan fitur terbaru tetapi permukaan API kami tetap sama. Anda selalu dapat melihat versi terbaru dan catatan rilis di bawah tab Rilis di GitHub.

Pelaporan keamanan

Jika Anda menemukan masalah keamanan dengan pustaka atau layanan kami, harap laporkan dengan secure@microsoft.com detail sebanyak mungkin. Pengajuan Anda mungkin memenuhi syarat untuk mendapatkan hadiah melalui program Microsoft Bounty. Harap jangan memublikasikan masalah keamanan di GitHub Issues atau situs publik lain mana pun. Kami akan segera menghubungi Anda setelah menerima informasi tersebut. Kami mendorong Anda untuk mendapatkan pemberitahuan tentang kapan insiden keamanan terjadi dengan mengunjungi halaman ini dan berlangganan Pemberitahuan Penasihat Keamanan.