Go için Microsoft Authentication Library (MSAL)

Note

Go için Microsoft Authentication Library (MSAL), MSAL kitaplık ailesine yeni bir eklemedir. Müşterinin ilgisini ölçmek ve topluluktan geri bildirim toplamak için üretime hazır önizlemede kullanıma sunulmuştur. Kitaplığı geliştirmemize yardımcı olmak için tüm katkıda bulunanları ( kitaplık deposundaki katkı yönergelerine bakın) bekliyoruz.

Go için Microsoft Authentication Library (MSAL), Geliştiriciler için Microsoft kimlik platformu bir parçasıdır. Microsoft kimlikleriyle (Azure AD ve Microsoft Hesapları) kullanıcıların veya uygulamaların oturum açmasına ve Microsoft Graph ya da Microsoft kimlik platformuna kaydettiğiniz kendi API'leriniz gibi API'leri çağırmak için belirteçler almanıza olanak tanır. Endüstri standardı OAuth2 ve OpenID Connect protokolleri kullanılarak oluşturulur.

En son kod, library GitHub deposundakidev dalında yer alır.

Yükleme

Go'yu ayarlama

Go'yı yüklemek için bu bağlantıyı ziyaret edin.

MSAL Go'u yükleme

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

Kullanım

MSAL Go kullanmadan önce uygulamanızı Microsoft kimlik platformu kaydetmeniz gerekir.

Genel yüzey

Kitaplığın Genel API'sini altında aşağıdaki dizinlerde appsbulabilirsiniz.

  • confidential - Gizli uygulama API'si
  • public - Genel uygulama API'si
  • cache - Kimlik bilgilerinin kalıcı önbellek depolamasını sağlamak için uygulanabilen önbellek arabirimi
  • managedidentity - Yönetilen Kimlik API'si

MSAL Go ile belirteç alma işlemi bu genel üç adım desenini izler. Diğer belirteç alma akışları için bazı küçük farklılıklar olabilir. Aşağıda temel bir örnek verilmiştir:

  1. MSAL , genel ve gizli istemci uygulamalarını ayırır. Bu nedenle, bir PublicClientApplication ve ConfidentialClientApplication örneğini oluşturur ve bunu uygulamanızın ömrü boyunca kullanırsınız.

    • Genel istemci başlatma:
    publicClientApp, err := public.New("client_id", public.WithAuthority("https://login.microsoftonline.com/Enter_The_Tenant_Name_Here"))
    
    • Gizli istemci başlatma:
    // 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"))
    

    Yönetilen Kimlik uygulamasını kullanmak için bkz. yönetilen kimlik

  2. MSAL, bellek içi önbellekle paketlenmiş olarak gelir. Önbelleği kullanmak isteğe bağlıdır, ancak kesinlikle öneririz.

    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
    }
    

    Önbellekte uygun belirteç yoksa veya bu adımı atlamayı seçerseniz, Azure AD'ye belirteç almak için bir istek gönderin. Uygulama türünüz ve senaryonuza göre belirteç almak için farklı yöntemler vardır. Burada bir yer tutucu akışını gösteriyoruz.

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

Çeşitli senaryolarda çeşitli uygulama türleriyle MSAL Go'un nasıl kullanılacağına ilişkin geliştirici örnek uygulamalarını görüntüleyebilirsiniz.

Yayınlar

Kitaplık sürümlerinin tam listesi için kitaplık kaynak kodu deposundaki Sürümler bölümüne bakın.

Topluluk yardımı ve desteği

Azure Active Directory’yi ve buna bu da dâhil olmak üzere SDK’lerini destekleme konusunda toplulukla birlikte çalışmak için Stack Overflow kullanıyoruz! Stack Overflow ile ilgili sorularınızı sormanızı kesinlikle öneririz. Ayrıca, daha önce sorunla karşılaşılıp karşılaşılmadığını görmek için mevcut sorulara göz atabilirsiniz. Lütfen sorularınızı sorarken etiketi kullanın azure-ad-msal .

Bir hata bulursanız veya özellik isteğiniz varsa, lütfen Sorunlar bölümünde yeni bir sorun açın.

Geri bildirim gönderin

Kitaplıkla ilgili geri bildiriminiz varsa özellik isteklerinizi ve hata raporlarınızı GitHub gönderdiğinizden emin olun.

Güvenlik kitaplığı

Bu kitaplık, kullanıcıların oturum açma ve hizmetlere erişme şeklini denetler. Mümkün olduğunda uygulamanızda kitaplığımızın en son sürümünü kullanmanızı öneririz. Uygulamanızı güncelleştirmeyle ilişkili riski denetleyebilmeniz için anlamsal sürüm oluşturma özelliğini kullanırız. Örneğin, her zaman en son ikincil sürüm numarasını (örneğin x.y.x) indirmek en son güvenlik ve özellik geliştirmelerini edinmenizi sağlar, ancak API yüzeyimiz aynı kalır. en son sürümü ve sürüm notlarını her zaman GitHub Sürümler sekmesinde görebilirsiniz.

Güvenlik raporlaması

Kitaplıklarımız veya hizmetlerimizle ilgili bir güvenlik sorunu bulursanız lütfen mümkün secure@microsoft.com olduğunca ayrıntılı olarak bildirin. Gönderiminiz, Microsoft Bounty programı aracılığıyla ödül almaya uygun olabilir. Güvenlik sorunlarını GitHub Sorunları'na veya başka bir genel siteye göndermeyin. Bilgileri aldıktan kısa süre sonra sizinle iletişime geçeceğiz. Bu sayfayı ziyaret ederek ve Güvenlik Önerisi Uyarıları'na abone olarak güvenlik olaylarının ne zaman gerçekleştiğine ilişkin bildirimler almanızı öneririz.