次の方法で共有


クイック スタート: サンプル モバイル アプリでユーザーをサインインさせ、Web API を呼び出す

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

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

このガイドでは、ユーザーをサインインさせ、ASP.NET Core Web API を呼び出すようにサンプル モバイル アプリケーションを構成する方法について説明します。

この記事では、次のタスクを実行します。

  • Web アプリケーションにプラットフォーム リダイレクト URL を追加します。
  • パブリック クライアント フローを有効にします。
  • 顧客テナントの詳細に独自の Microsoft Entra 外部 ID を使用するように Android 構成コードサンプル ファイルを更新します。
  • サンプルの Android モバイル アプリケーションを実行してテストします。
  • 保護された Web API を呼び出します。

[前提条件]

  • Android Studio

  • 外部テナント。 まだお持ちでない場合は、 無料試用版にサインアップしてください。

  • Microsoft Entra 管理センターに新しいクライアント Web アプリを登録します。 これは、組織のディレクトリと個人用の Microsoft アカウントのアカウント用に構成されています。 詳細については、「 アプリケーションの登録 」を参照してください。 後で使用するために、アプリケーション の [概要 ] ページから次の値を記録します。

    • アプリケーション (クライアント) ID
    • ディレクトリ (テナント) ID
  • 少なくとも 1 つのスコープ (委任されたアクセス許可) と、 ToDoList.Read などの 1 つのアプリ ロール (アプリケーションアクセス許可) を公開する Web API 登録。 まだ行っていない場合は、 サンプルの Android モバイル アプリで API を呼び出して 、コア Web API ASP.NET 機能を保護する手順に従ってください。 次の手順を完了していることを確認します。

    • API スコープを構成する
    • アプリ ロールを構成する
    • オプションクレームの設定
    • サンプル Web API を複製またはダウンロードする
    • サンプル Web API の構成と実行

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

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

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

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

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

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

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

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

サンプル アプリに Web API のアクセス許可を付与する

クライアント アプリと Web API の両方を登録し、スコープを作成して API を公開したら、次の手順に従って API に対するクライアントのアクセス許可を構成できます。

  1. [ アプリの登録 ] ページで、作成したアプリケーション ( ciam-client-app など) を選択して [概要] ページを開きます。

  2. [管理] の下にある [API のアクセス許可] を選択します。

  3. [ 構成されたアクセス許可] で、[ アクセス許可の追加] を選択します。

  4. 組織で 使用している API タブを選択します。

  5. API の一覧で、 ciam-ToDoList-api などの API を選択します。

  6. [ 委任されたアクセス許可 ] オプションを選択します。

  7. アクセス許可の一覧から ToDoList.Read、ToDoList.ReadWrite を選択します (必要に応じて検索ボックスを使用します)。

  8. [ アクセス許可の追加] ボタンを選択します。

  9. この時点で、アクセス許可が正しく割り当てられました。 ただし、テナントは顧客のテナントであるため、コンシューマー ユーザー自身はこれらのアクセス許可に同意できません。 これに対処するには、管理者がテナント内のすべてのユーザーに代わってこれらのアクセス許可に同意する必要があります。

    1. テナント名の管理者同意を付与する を選択し、その後、[はい] を選択します。

    2. 更新を選択し、ステータスの下に両方のアクセス許可について<あなたのテナント名>の「許可済み」と表示されることを確認します。

  10. [構成済みのアクセス許可] ボックスの一覧で、ToDoList.Read および ToDoList.ReadWrite のアクセス許可を一度に 1 つずつ選択し、後で使用できるようにアクセス許可の完全な URI をコピーします。 完全なアクセス許可 URI は、 api://{clientId}/{ToDoList.Read} または api://{clientId}/{ToDoList.ReadWrite}のようになります。

サンプル モバイル アプリケーションを複製する

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

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

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

サンプル Android モバイル アプリケーションを構成する

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

  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. WEB_API_BASE_URLという名前のプロパティを検索し、URL を Web API に設定します。

  8. scopesという名前のプロパティを検索し、「Web API のアクセス許可を Android サンプル アプリに付与する」に記録されているスコープを設定します。

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

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

サンプル アプリを実行して Web API を呼び出す

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

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

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

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

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

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

  5. [API - Get を実行] を選択して、以前に設定した ASP.NET Core Web API を呼び出します。 Web API の呼び出しが成功すると HTTP 200 が返され、HTTP 403 は未承認のアクセスを意味します。