適用対象:
外部テナント (詳細)
開始する前に、このページの上部にある [テナントの種類 の選択] セレクターを使用して、テナントの種類を選択します。 Microsoft Entra ID には、 従業員 と 外部の 2 つのテナント構成が用意されています。 従業員テナントの構成は、従業員、内部アプリ、およびその他の組織リソースを対象としています。 外部テナントは、顧客向けのアプリ用です。
このガイドでは、ユーザーをサインインさせ、ASP.NET Core Web API を呼び出すようにサンプル モバイル アプリケーションを構成する方法について説明します。
この記事では、次のタスクを実行します。
- Web アプリケーションにプラットフォーム リダイレクト URL を追加します。
- パブリック クライアント フローを有効にします。
- 顧客テナントの詳細に独自の Microsoft Entra 外部 ID を使用するように Android 構成コードサンプル ファイルを更新します。
- サンプルの Android モバイル アプリケーションを実行してテストします。
- 保護された Web API を呼び出します。
[前提条件]
外部テナント。 まだお持ちでない場合は、 無料試用版にサインアップしてください。
Microsoft Entra 管理センターに新しいクライアント Web アプリを登録します。 これは、組織のディレクトリと個人用の Microsoft アカウントのアカウント用に構成されています。 詳細については、「 アプリケーションの登録 」を参照してください。 後で使用するために、アプリケーション の [概要 ] ページから次の値を記録します。
- アプリケーション (クライアント) ID
- ディレクトリ (テナント) ID
少なくとも 1 つのスコープ (委任されたアクセス許可) と、 ToDoList.Read などの 1 つのアプリ ロール (アプリケーションアクセス許可) を公開する Web API 登録。 まだ行っていない場合は、 サンプルの Android モバイル アプリで API を呼び出して 、コア Web API ASP.NET 機能を保護する手順に従ってください。 次の手順を完了していることを確認します。
- API スコープを構成する
- アプリ ロールを構成する
- オプションクレームの設定
- サンプル Web API を複製またはダウンロードする
- サンプル Web API の構成と実行
プラットフォーム リダイレクト URL を追加する
アプリの登録にアプリの種類を指定するには、次の手順に従います。
- [管理] で、[認証] を選択します。
- [ プラットフォームの構成 ] ページで、[ プラットフォームの追加] を選択し、[ Android ] オプションを選択します。
- プロジェクトのパッケージ名を入力します。
サンプル コードをダウンロードした場合、この値は
com.azuresamples.msaldelegatedandroidkotlinsampleapp。 - [Android アプリの構成] ウィンドウの [署名ハッシュ] セクションで、[開発署名ハッシュの生成] を選択します。これは開発環境ごとに変更されます。ターミナルでオペレーティング システムの KeyTool コマンドをコピーして実行します。
- KeyTool によって生成された 署名ハッシュ を入力します。
- 設定を選択します。
- Androidの構成ウィンドウから MSAL 構成をコピーし、後でアプリを構成するために保存します。
- 完了を選択します。
パブリック クライアント フローを有効にする
アプリをパブリック クライアントとして識別するには、次の手順に従います。
[管理] で、[認証] を選択します。
[ 詳細設定] の [ パブリック クライアント フローを許可する] で、[ はい] を選択します。
[保存] を選択して変更を保存します。
サンプル アプリに Web API のアクセス許可を付与する
クライアント アプリと Web API の両方を登録し、スコープを作成して API を公開したら、次の手順に従って API に対するクライアントのアクセス許可を構成できます。
[ アプリの登録 ] ページで、作成したアプリケーション ( ciam-client-app など) を選択して [概要] ページを開きます。
[管理] の下にある [API のアクセス許可] を選択します。
[ 構成されたアクセス許可] で、[ アクセス許可の追加] を選択します。
組織で 使用している API タブを選択します。
API の一覧で、 ciam-ToDoList-api などの API を選択します。
[ 委任されたアクセス許可 ] オプションを選択します。
アクセス許可の一覧から ToDoList.Read、ToDoList.ReadWrite を選択します (必要に応じて検索ボックスを使用します)。
[ アクセス許可の追加] ボタンを選択します。
この時点で、アクセス許可が正しく割り当てられました。 ただし、テナントは顧客のテナントであるため、コンシューマー ユーザー自身はこれらのアクセス許可に同意できません。 これに対処するには、管理者がテナント内のすべてのユーザーに代わってこれらのアクセス許可に同意する必要があります。
テナント名
の管理者同意を付与する を選択し、その後、[ はい ] を選択します。更新を選択し、ステータスの下に両方のアクセス許可について<あなたのテナント名>の「許可済み」と表示されることを確認します。
[構成済みのアクセス許可] ボックスの一覧で、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 リソースへのアクセスを有効にするには、次の手順に従ってサンプルを構成します。
Android Studio で、複製したプロジェクトを開きます。
/app/src/main/res/raw/auth_config_ciam.json ファイルを開きます。
プレースホルダーを見つけます。
-
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を使用します。 テナント サブドメインがわからない場合は、 テナントの詳細を読み取る方法について説明します。
-
/app/src/main/AndroidManifest.xml ファイルを開きます。
プレースホルダーを見つけます。
-
ENTER_YOUR_SIGNATURE_HASH_HEREプラットフォームのリダイレクト URL を追加したときに生成した 署名ハッシュ に置き換えます。
-
/app/src/main/java/com/azuresamples/msaldelegatedandroidkotlinsampleapp/MainActivity.kt ファイルを開きます。
WEB_API_BASE_URLという名前のプロパティを検索し、URL を Web API に設定します。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 を呼び出す
アプリをビルドして実行するには、次の手順に従います。
ツール バーの [実行構成] メニューからアプリを選択します。
ターゲット デバイス メニューで、アプリを実行するデバイスを選択します。
デバイスが構成されていない場合は、Android Emulator を使用する Android 仮想デバイスを作成するか、物理 Android デバイスを接続する必要があります。
[ 実行 ] ボタンを選択します。
アクセス トークンを要求するには、[ 対話形式でトークンを取得 する] を選択します。
[API - Get を実行] を選択して、以前に設定した ASP.NET Core Web API を呼び出します。 Web API の呼び出しが成功すると HTTP 200 が返され、HTTP 403 は未承認のアクセスを意味します。