サンプル Android (Kotlin) アプリでユーザーをサインインする
このガイドでは、ユーザーをサインインするサンプル Android モバイル アプリケーションを構成する方法について説明します。
この記事では、次のタスクを実行します。
- Microsoft Entra 管理センターでアプリケーションを登録します。
- プラットフォーム リダイレクト URL を追加します。
- パブリック クライアント フローを有効にします。
- 顧客テナントの詳細に独自の Microsoft Entra 外部 ID を使用するように Android 構成コードサンプル ファイルを更新します。
- サンプルの Android モバイル アプリケーションを実行してテストします。
前提条件
- Android Studio。
- 外部テナント。 お持ちでない場合は、無料試用版にサインアップしてください。
アプリケーションの登録
Microsoft Entra を使用してアプリケーションでユーザーをサインインできるようにするには、作成するアプリケーションを Microsoft Entra 外部 ID に認識させる必要があります。 アプリの登録によって、アプリと Microsoft Entra の間に信頼関係が確立されます。 アプリケーションを登録すると、外部 ID によって、アプリケーション (クライアント) ID と呼ばれる一意識別子が生成されます。これは、認証要求を作成するときにアプリを識別するために使用される値です。
Microsoft Entra 管理センターにアプリを登録する方法を次の手順に示します。
アプリケーション開発者以上として Microsoft Entra 管理センターにサインインします。
複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコン を使用し、[ディレクトリとサブスクリプション] メニューから外部テナントに切り替えます。
[ID]>[アプリケーション]>[アプリの登録] を参照します。
[+ 新規登録] を選択します。
表示される [アプリケーションの登録] ページで、次のようにします。
- アプリのユーザーに表示されるわかりやすいアプリケーションの [名前] を入力します (例: ciam-client-app)。
- [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。
[登録] を選択します。
登録が成功すると、アプリケーションの [概要] ペインが表示されます。 アプリケーションのソース コードで使用するアプリケーション (クライアント) ID を記録します。
プラットフォーム リダイレクト URL を追加する
アプリの登録にアプリの種類を指定するには、次の手順に従います。
- [管理] で、 [認証] を選択します。
- [プラットフォーム構成] ページで、[プラットフォームの追加] を選択し、[Android] オプションを選択します。
- プロジェクトのパッケージ名を入力します。 サンプル コードをダウンロードした場合、この値は
com.azuresamples.msaldelegatedandroidkotlinsampleapp
です。 - [Android アプリの構成] ペインの [署名ハッシュ] セクションで、[開発用署名ハッシュの生成] を選択します。これは開発環境ごとに変わります。お使いのターミナルでオペレーティング システムの KeyTool コマンドをコピーして実行します。
- KeyTool によって生成された署名ハッシュを入力します。
- [構成] をクリックします。
- [Android の構成] ペインから [MSAL 構成] をコピーし、後でアプリを構成するために保存します。
- 完了 を選択します。
パブリック クライアント フローを有効にする
アプリをパブリック クライアントとして識別するには、次の手順に従います。
[管理] で、 [認証] を選択します。
[詳細設定] で、[パブリック クライアント フローを許可する] に対して [はい] を選択します。
[保存] を選択して変更を保存します。
管理者の同意を与える
アプリケーションを登録すると、User.Read アクセス許可が割り当てられます。 ただし、テナントが外部テナントであるため、顧客ユーザー自身はこのアクセス許可に同意できません。 管理者は、テナント内のすべてのユーザーに代わってこのアクセス許可に同意する必要があります。
[アプリの登録] ページで、作成したアプリケーション ("ciam-client-app" など) を選択して、その [概要] ページを開きます。
[管理] の下にある [API のアクセス許可] を選択します。
- [<ご使用のテナント名> に管理者の同意を与えます] を選択してから、[はい] を選択します。
- [最新の情報に更新] を選択し、そのアクセス許可の [状態] に "<テナント名> に付与されました" と表示されていることを確認します。
サンプル Android モバイル アプリをクローンする
サンプル アプリケーションを取得するには、GitHub から複製するか、.zip ファイルとしてダウンロードします。
サンプルをクローンするには、コマンド プロンプトを開き、プロジェクトを作成する場所に移動し、次のコマンドを入力します。
git clone https://github.com/Azure-Samples/ms-identity-ciam-browser-delegated-android-sample
サンプル Android モバイル アプリを構成する
認証と Microsoft Graph リソースへのアクセスを有効にするには、次の手順に従ってサンプルを構成します。
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 ファイルを開きます。
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}"
アプリが構成され、実行する準備ができました。
サンプルの Android モバイル アプリケーションを実行してテストする
アプリをビルドして実行するには、次のステップに従います。
ツール バーの実行構成メニューからアプリを選択します。
ターゲット デバイス メニューで、アプリを実行するデバイスを選択します。
デバイスが構成されていない場合は、Android Emulator を使用するための Android 仮想デバイスを作成するか、物理 Android デバイスを接続する必要があります。
[実行] ボタンを選択します。
[対話的にトークンを取得] を選択して、アクセス トークンを要求します。
[API - GET の実行] を選択し、保護された ASP.NET Core Web API を呼び出すと、エラーが発生します。
保護された Web API の呼び出しの詳細については、「次のステップ」を参照してください