Go のMicrosoft Authentication Library (MSAL)

Note

Go 用Microsoft Authentication Library (MSAL) は、MSAL ライブラリ ファミリに新たに追加されています。 お客様の関心を評価し、コミュニティからフィードバックを収集するために、運用準備完了プレビューで利用できるようになりました。 ライブラリの改善に役立つすべての共同作成者 ( ライブラリ リポジトリの投稿ガイドラインを参照) を歓迎します。

Go のMicrosoft Authentication Library (MSAL) は、開発者向け Microsoft ID プラットフォームの一部です。 これにより、Microsoft ID (Azure ADMicrosoft アカウント) を使用してユーザーまたはアプリにサインインし、Microsoft GraphやMicrosoft ID プラットフォームに登録されている独自の API などの API を呼び出すトークンを取得できます。 業界標準の OAuth2 プロトコルと OpenID Connect プロトコルを使用して構築されています。

最新のコードは、ライブラリ GitHub リポジトリの dev ブランチにあります。

Installation

Go の設定

Go をインストールするには、 このリンクを参照してください。

MSAL Go のインストール

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

使用方法

MSAL Go を使用する前に、アプリケーションをMicrosoft ID プラットフォームに登録する必要があります

パブリック サーフェス

ライブラリのパブリック API は、次の apps の下のディレクトリにあります。

  • confidential - 機密アプリケーション API
  • public - パブリック アプリケーション API
  • cache - 資格情報の永続化キャッシュ ストレージを提供するために実装できるキャッシュ インターフェイス
  • managedidentity - マネージド ID API

MSAL Go を使用してトークンを取得するには、この一般的な 3 つのステップ パターンに従います。 他のトークン取得フローには若干の違いがある可能性があります。 基本的な例を次に示します。

  1. MSAL は 、パブリック クライアント アプリケーションと機密クライアント アプリケーションを分離します。 そのため、 PublicClientApplicationConfidentialClientApplication のインスタンスを作成し、アプリケーションの有効期間を通じてこれを使用します。

    • パブリック クライアントの初期化:
    publicClientApp, err := public.New("client_id", public.WithAuthority("https://login.microsoftonline.com/Enter_The_Tenant_Name_Here"))
    
    • 機密クライアントの初期化:
    // 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"))
    

    マネージド ID アプリケーションを使用する場合は、マネージド ID を参照してください

  2. MSAL にはメモリ内キャッシュがパッケージ化されています。 キャッシュの利用は省略可能ですが、強くお勧めします。

    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
    }
    

    キャッシュに適切なトークンがない場合、またはこの手順をスキップすることを選択した場合は、トークンを取得する要求Azure AD に送信します。 トークンを取得する方法は、アプリケーションの種類とシナリオに基づいて異なります。 ここでは、プレースホルダー フローを示します。

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

さまざまなシナリオのさまざまなアプリケーションの種類で MSAL Go を使用する方法に関する 開発者サンプル アプリ を表示できます。

リリース

ライブラリ リリースの完全な一覧については、ライブラリ のソース コード リポジトリの「 リリース 」セクションを参照してください。

コミュニティのヘルプとサポート

Stack Overflow を使用して、この SDK を含むAzure Active Directoryとその SDK のサポートについてコミュニティと連携します。 Stack Overflow について質問することを強くお勧めします。 また、既存の質問を参照して、以前に問題が発生した人がいるかどうかを確認することもできます。 質問するときは、 azure-ad-msal タグを使用してください。

バグが見つかるか、機能要求がある場合は、[ 問題 ] セクションで新しい問題を開いてください。

フィードバックを送信

ライブラリに関するフィードバックがある場合は、GitHubに関する機能要求とバグ レポートを送信してください。

セキュリティ ライブラリ

このライブラリは、ユーザーがサービスにサインインしてアクセスする方法を制御します。 可能であれば、アプリで最新バージョンのライブラリを使用することをお勧めします。 セマンティック バージョン管理を使用するため、アプリの更新に関連するリスクを制御できます。 たとえば、常に最新のマイナー バージョン番号 (x.y.x など) をダウンロードすると、最新のセキュリティと機能の強化が保証されますが、API サーフェスは変わりません。 最新バージョンとリリース ノートは、GitHubの [リリース] タブでいつでも確認できます。

セキュリティ レポート

ライブラリまたはサービスに関するセキュリティの問題が見つかる場合は、できるだけ詳細に secure@microsoft.com するように報告してください。 提出物は、Microsoft 報奨金プログラムを通じて 報奨金 の対象となる場合があります。 GitHubの問題やその他のパブリック サイトにセキュリティの問題を投稿しないでください。 情報をお受け取り次第、お客様に連絡いたします。 このページにアクセスし、セキュリティ アドバイザリ アラートをサブスクライブすることで、セキュリティ インシデントが発生した場合の通知を受け取ることをお勧めします。