次の方法で共有


クイック スタート: サンプル モバイル アプリでユーザーをサインインする

適用対象: 次の内容が従業員テナントに適用されることを示す白いチェック マーク記号が付いた緑の円。 従業員テナント :次の内容が外部テナントに適用されることを示す白いチェック マーク記号が付いた緑の円。 外部テナント (詳細)

開始する前に、このページの上部にある [テナントの種類 の選択] セレクターを使用して、テナントの種類を選択します。 Microsoft Entra ID には、 従業員外部の 2 つのテナント構成が用意されています。 従業員テナントの構成は、従業員、内部アプリ、およびその他の組織リソースを対象としています。 外部テナントは、顧客向けのアプリ用です。

このクイック スタートでは、Android アプリケーションがユーザーをサインインさせ、Microsoft Graph API を呼び出すアクセス トークンを取得する方法を示すコード サンプルをダウンロードして実行します。

アプリケーションは、Microsoft ID プラットフォームがアプリケーションにトークンを提供できるように、Microsoft Entra ID のアプリ オブジェクトによって表される必要があります。

[前提条件]

  • アクティブなサブスクリプションを持つ Azure アカウント。 アカウントをまだお持ちでない場合は、 無料でアカウントを作成してください
  • この Azure アカウントには、アプリケーションを管理するためのアクセス許可が必要です。 次の Microsoft Entra ロールには、必要なアクセス許可が含まれます。
    • アプリケーション管理者
    • アプリケーション開発者
  • 従業員テナント。 既定のディレクトリを使用するか、 新しいテナントを設定できます。
  • 組織のディレクトリと個人用の Microsoft アカウントのアカウント用に構成された Microsoft Entra 管理センターに新しいアプリを登録します。 詳細については、「 アプリケーションの登録 」を参照してください。 後で使用するために、アプリケーション の [概要 ] ページから次の値を記録します。
    • アプリケーション (クライアント) ID
    • ディレクトリ (テナント) ID
  • Android Studio
  • Android 16 以降

リダイレクト URI を追加する

ダウンロードしたコード サンプルとの互換性を確保するには、アプリ登録で特定のリダイレクト URI を構成する必要があります。 これらの URI は、ユーザーが正常にサインインした後にアプリにリダイレクトするために不可欠です。

  1. [管理] で、認証>プラットフォームの追加>Android を選択します

  2. 上記でダウンロードしたサンプルの種類に基づいて、プロジェクトのパッケージ名を入力します。

    • Java サンプル - com.azuresamples.msalandroidapp
    • Kotlin サンプル - com.azuresamples.msalandroidkotlinapp
  3. [Android アプリの構成] ウィンドウの [署名ハッシュ] セクションで、[開発署名ハッシュの生成] を選択し、KeyTool コマンドをコマンド ラインにコピーします。

    • KeyTool.exe は、Java Development Kit (JDK) の一部としてインストールされます。 また、KeyTool コマンドを実行するには、OpenSSL ツールをインストールする必要があります。 詳細については、 キーの生成に関する Android ドキュメントを 参照してください。
  4. KeyTool によって生成された 署名ハッシュ を入力します。

  5. 後でアプリを構成するときに入力できるように、[構成] を選択し、[Android 構成] ウィンドウに表示される MSAL 構成を保存します。

  6. 完了を選択します。

サンプル アプリをダウンロードする

サンプル アプリケーションを構成する

  1. Android Studio のプロジェクト ウィンドウで、 app\src\main\res に移動します。

  2. res を右クリックし、[新規>Directory] を選択します。 新しいディレクトリ名として「 raw 」と入力し、[ OK] を選択します

  3. app>src>main>res>raw で、auth_config_single_account.jsonという名前の JSON ファイルに移動し、前に保存した MSAL 構成を貼り付けます。

    リダイレクト URI の下に、次のように貼り付けます。

      "account_mode" : "SINGLE",
    

    構成ファイルは次の例のようになります。

    {
      "client_id": "00001111-aaaa-bbbb-3333-cccc4444",
      "authorization_user_agent": "WEBVIEW",
      "redirect_uri": "msauth://com.azuresamples.msalandroidapp/00001111%cccc4444%3D",
      "broker_redirect_uri_registered": false,
      "account_mode": "SINGLE",
      "authorities": [
        {
          "type": "AAD",
          "audience": {
            "type": "AzureADandPersonalMicrosoftAccount",
            "tenant_id": "common"
          }
        }
      ]
    }
    
  4. /app/src/main/AndroidManifest.xml ファイルを開きます。

  5. プレースホルダーを見つけます。

    • enter_the_signature_hash プラットフォームのリダイレクト URL を追加したときに生成した 署名ハッシュ に置き換えます。

    このチュートリアルでは、単一アカウント モードでアプリを構成する方法のみを示しています。詳細については、 単一アカウント モードと複数アカウント モード の構成に関 するページを参照してください

サンプル アプリを実行する

Android Studio の 使用可能な デバイス ドロップダウンからエミュレーターまたは物理デバイスを選択し、アプリを実行します。

サンプル アプリは 、シングル アカウント モード 画面で起動します。 既定のスコープ user.read は既定で提供されます。これは、Microsoft Graph API 呼び出し中に独自のプロファイル データを読み取るときに使用されます。 既定では、Microsoft Graph API 呼び出しの URL が提供されます。 必要に応じて、これらの両方を変更できます。

1 つのアカウントと複数のアカウントの使用状況を示す MSAL サンプル アプリのスクリーンショット。

アプリ メニューを使用して、1 つのアカウント モードと複数のアカウント モードを変更します。

シングル アカウント モードでは、職場または自宅のアカウントを使用してサインインします。

  1. [ グラフ データを対話的に取得 する] を選択して、ユーザーに資格情報の入力を求めます。 Microsoft Graph API の呼び出しからの出力が画面の下部に表示されます。
  2. サインインしたら、[ グラフ データを自動的に取得 する] を選択して、ユーザーに資格情報の入力を求めずに Microsoft Graph API を呼び出します。 Microsoft Graph API の呼び出しからの出力が画面の下部に表示されます。

複数アカウント モードでは、同じ手順を繰り返すことができます。 さらに、サインインしているアカウントを削除できます。これにより、そのアカウントのキャッシュされたトークンも削除されます。

サンプルのしくみ

このクイック スタートで生成されたサンプル アプリの動作を示す図。

このコードは、1 つのアカウントと複数のアカウント MSAL アプリを記述する方法を示すフラグメントに編成されています。 コード ファイルは次のように編成されています。

File 対象
MainActivity UI を管理します
MSGraphRequestWrapper MSAL によって提供されるトークンを使用して Microsoft Graph API を呼び出します
MultipleAccountModeFragment マルチアカウント アプリケーションを初期化し、ユーザー アカウントを読み込み、Microsoft Graph API を呼び出すトークンを取得します
SingleAccountModeFragment 単一アカウント アプリケーションを初期化し、ユーザー アカウントを読み込み、Microsoft Graph API を呼び出すトークンを取得します
res/auth_config_multiple_account.json 複数アカウント構成ファイル
res/auth_config_single_account.json 単一アカウント構成ファイル
Gradleスクリプト/build.grade (モジュール:app) MSAL ライブラリの依存関係がここに追加されます

次に、これらのファイルについて詳しく説明し、各ファイルで MSAL 固有のコードを呼び出します。

次のステップ

Microsoft ID プラットフォームからアクセス トークンを取得し、それを使用して Microsoft Graph API を呼び出す Android アプリを構築する Android チュートリアルに進みます。

このクイック スタートでは、アプリケーションの登録、リダイレクト URL の設定、構成の更新、アプリのテストを行って、ユーザーをサインインさせるサンプル Android、.NET MAUI Android、iOS/macOS アプリを構成する方法について説明します。

[前提条件]

  • アクティブなサブスクリプションを持つ Azure アカウント。 アカウントをまだお持ちでない場合は、 無料でアカウントを作成してください
  • この Azure アカウントには、アプリケーションを管理するためのアクセス許可が必要です。 次の Microsoft Entra ロールには、必要なアクセス許可が含まれます。
    • アプリケーション管理者
    • アプリケーション開発者
  • 外部テナント。 作成するには、次の方法から選択します。
  • この組織のディレクトリ内のアカウント専用に構成された Microsoft Entra 管理センターに新しいアプリを登録します。 詳細については、「 アプリケーションの登録 」を参照してください。 後で使用するために、アプリケーション の [概要 ] ページから次の値を記録します。
    • アプリケーション (クライアント) ID
    • ディレクトリ (テナント) ID

プラットフォーム リダイレクト URL を追加する

ダウンロードしたコード サンプルとの互換性を確保するには、アプリ登録で特定のリダイレクト URI を構成する必要があります。 これらの URI は、ユーザーが正常にサインインした後にアプリにリダイレクトするために不可欠です。

アプリの登録にアプリの種類を指定するには、次の手順に従います。

  1. [管理] で、[認証] を選択します。
  2. [ プラットフォームの構成 ] ページで、[ プラットフォームの追加] を選択し、[ Android ] オプションを選択します。
  3. プロジェクトのパッケージ名を入力します。 サンプル コードをダウンロードした場合、この値はcom.azuresamples.msaldelegatedandroidkotlinsampleapp
  4. [Android アプリの構成] ウィンドウの [署名ハッシュ] セクションで、[開発署名ハッシュの生成] を選択します。これは開発環境ごとに変更されます。ターミナルでオペレーティング システムの KeyTool コマンドをコピーして実行します。
  5. KeyTool によって生成された 署名ハッシュ を入力します。
  6. 設定を選択します。
  7. Androidの構成ウィンドウから MSAL 構成をコピーし、後でアプリを構成するために保存します。
  8. 完了を選択します。

パブリック クライアント フローを有効にする

アプリをパブリック クライアントとして識別するには、次の手順に従います。

  1. [管理] で、[認証] を選択します。

  2. [ 詳細設定] の [ パブリック クライアント フローを許可する] で、[ はい] を選択します。

  3. [保存] を選択して変更を保存します。

サンプル アプリケーションの複製

サンプル アプリケーションを取得するには、GitHub から複製するか、 .zip ファイルとしてダウンロードします。

  • サンプルを複製するには、コマンド プロンプトを開き、プロジェクトを作成する場所に移動し、次のコマンドを入力します。

    git clone https://github.com/Azure-Samples/ms-identity-ciam-browser-delegated-android-sample
    

サンプル アプリケーションを構成する

認証と Microsoft Graph リソースへのアクセスを有効にするには、次の手順に従ってサンプルを構成します。

  1. Android Studio で、複製したプロジェクトを開きます。

  2. /app/src/main/res/raw/auth_config_ciam.json ファイルを開きます。

  3. プレースホルダーを見つけます。

    • Enter_the_Application_Id_Here をクリックし、先ほど登録したアプリの アプリケーション (クライアント) ID に置き換えます。
    • Enter_the_Redirect_Uri_Here プラットフォーム リダイレクト URL を追加したときに前にダウンロードした Microsoft Authentication Library (MSAL) 構成ファイルの redirect_uri の値に置き換えます。
    • Enter_the_Tenant_Subdomain_Here ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、テナントのプライマリ ドメインが contoso.onmicrosoft.comされている場合は、 contosoを使用します。 テナント サブドメインがわからない場合は、 テナントの詳細を読み取る方法について説明します。
  4. /app/src/main/AndroidManifest.xml ファイルを開きます。

  5. プレースホルダーを見つけます。

    • ENTER_YOUR_SIGNATURE_HASH_HERE プラットフォームのリダイレクト URL を追加したときに生成した 署名ハッシュ に置き換えます。
  6. /app/src/main/java/com/azuresamples/msaldelegatedandroidkotlinsampleapp/MainActivity.kt ファイルを開きます。

  7. scopesという名前のプロパティを検索し、[管理者の同意の付与] に記録されているスコープを設定します。 スコープを記録していない場合は、このスコープ リストを空のままにすることができます。

    private const val scopes = "" // Developers should set the respective scopes of their Microsoft Graph resources here. For example, private const val scopes = "api://{clientId}/{ToDoList.Read} api://{clientId}/{ToDoList.ReadWrite}"
    

アプリを構成し、実行する準備ができました。

サンプル アプリを実行してテストする

アプリをビルドして実行するには、次の手順に従います。

  1. ツール バーの [実行構成] メニューからアプリを選択します。

  2. ターゲット デバイス メニューで、アプリを実行するデバイスを選択します。

    デバイスが構成されていない場合は、Android Emulator を使用する Android 仮想デバイスを作成するか、物理 Android デバイスを接続する必要があります。

  3. [ 実行 ] ボタンを選択します。

  4. アクセス トークンを要求するには、[ 対話形式でトークンを取得 する] を選択します。

  5. [API - Perform GET] を選択して保護された ASP.NET Core Web API を呼び出すと、エラーが発生します。

保護された Web API の呼び出しの詳細については、次の手順を参照してください。

次のステップ