適用対象: 従業員テナント
外部テナント (詳細はこちら)
このチュートリアルでは、Android アプリに Microsoft Authentication Library (MSAL) for Android を追加する方法について説明します。 MSAL を使用すると、Android アプリケーションは Microsoft Entra を使用してユーザーを認証できます。
このチュートリアルでは、次のことを行います。
- MSAL 依存関係を追加する
- 構成を追加する
- MSAL SDK インスタンスを作成する
[前提条件]
- 従業員テナント。 既定のディレクトリを使用するか、新しいテナントを設定できます。
-
この組織のディレクトリ内のアカウント専用に構成された Microsoft Entra 管理センターに新しいアプリを登録します。 詳細については、「 アプリケーションの登録 」を参照してください。 後で使用するために、アプリケーション の [概要 ] ページから次の値を記録します。
- アプリケーション (クライアント) ID
- ディレクトリ (テナント) ID
- Android プロジェクト。 Android プロジェクトがない場合は、作成します。
リダイレクト URI を追加する
アプリの登録で特定のリダイレクト URI を構成して、ダウンロードしたコード サンプルとの互換性を確保する必要があります。 これらの URI は、ユーザーが正常にサインインした後にアプリをリダイレクトするために不可欠です。
[管理] で、認証>プラットフォームの追加>Android を選択します。
上記でダウンロードしたサンプルタイプに基づいて、プロジェクトのパッケージ名を入力します。
- Javaサンプル -
com.azuresamples.msalandroidapp
- Kotlin サンプル -
com.azuresamples.msalandroidkotlinapp
- Javaサンプル -
[Android アプリの構成] ウィンドウの [署名ハッシュ] セクションで、[開発署名ハッシュの生成] を選択し、KeyTool コマンドをコマンド ラインにコピーします。
- KeyTool.exe は、Java Development Kit (JDK) の一部としてインストールされます。 KeyTool コマンドを実行するには、OpenSSL ツールもインストールする必要があります。 詳細については、キーの生成に関する Android のドキュメントを参照してください。
KeyTool によって生成された 署名ハッシュ を入力します。
[構成] を選択し、後でアプリを構成するときに入力できるように、[Android の構成] ペインに表示される [MSAL 構成] を保存しておきます。
完了を選択します。
MSAL の依存関係と関連するライブラリをプロジェクトに追加する
Android プロジェクトに MSAL 依存関係を追加するには、次の手順に従います。
Android Studio でプロジェクトを開くか、新しいプロジェクトを作成します。
アプリケーションの
build.gradle
を開き、次の依存関係を追加します。allprojects { repositories { //Needed for com.microsoft.device.display:display-mask library maven { url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1' name 'Duo-SDK-Feed' } mavenCentral() google() } } //... dependencies { implementation 'com.microsoft.identity.client:msal:5.+' //... }
build.gradle
構成では、リポジトリはプロジェクトの依存関係に対して定義されます。 これには、Azure DevOps のcom.microsoft.device.display:display-mask
ライブラリの Maven リポジトリ URL が含まれています。 さらに、MavenCentralとGoogleリポジトリを利用します。 dependencies セクションでは、MSAL バージョン 5 の実装と、場合によっては他の依存関係を指定します。Android Studio で、[ File>Sync Project with Gradle Files] を選択します。
構成を追加する
JSON 構成設定を使用して、アプリケーション (クライアント) ID などの必要なテナント識別子を MSAL SDK に渡します。
構成ファイルを作成するには、次の手順に従います。
Android Studio のプロジェクト ウィンドウで、app\src\main\res に移動します。
res を右クリックして、[New](新規)>[Directory](ディレクトリ) を選択します。 新しいディレクトリの名前に「
raw
」と入力し、[OK] を選択します。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": true, "account_mode": "SINGLE", "authorities": [ { "type": "AAD", "audience": { "type": "AzureADandPersonalMicrosoftAccount", "tenant_id": "common" } } ] }
このチュートリアルでは単一アカウント モードでアプリを構成する方法のみを紹介しているため、詳細については、単一アカウント モードと複数アカウント モードに関する記事およびアプリの構成に関する記事を参照してください
'WEBVIEW' を使用することをお勧めします。 アプリで "authorization_user_agent" を 'BROWSER' として構成する場合は、次の更新を行う必要があります。 a) auth_config_single_account.jsonを "authorization_user_agent": "Browser" で更新します。 b) AndroidManifest.xml を更新します。 アプリで app>src>main>AndroidManifest.xml に移動し、
BrowserTabActivity
アクティビティを<application>
要素の子として追加します。 このエントリにより、Microsoft Entra ID は認証の完了後にアプリケーションにコールバックできます。<!--Intent filter to capture System Browser or Authenticator calling back to our app after sign-in--> <activity android:name="com.microsoft.identity.client.BrowserTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="msauth" android:host="Enter_the_Package_Name" android:path="/Enter_the_Signature_Hash" /> </intent-filter> </activity>
-
パッケージ名を使用して
android:host=.
値を置き換えます。com.azuresamples.msalandroidapp
のようになります。 -
署名ハッシュを使用して
android:path=
値を置き換えます。 署名ハッシュの先頭に/
があることを確認します。/aB1cD2eF3gH4+iJ5kL6-mN7oP8q=
のようになります。
これらの値は、アプリの登録の [認証] ブレードでも確認できます。
-
パッケージ名を使用して
MSAL SDK インスタンスを作成する
MSAL SDK インスタンスを初期化するには、次のコードを使用します。
PublicClientApplication.createSingleAccountPublicClientApplication(
getContext(),
R.raw.auth_config_single_account,
new IPublicClientApplication.ISingleAccountApplicationCreatedListener() {
@Override
public void onCreated(ISingleAccountPublicClientApplication application) {
// Initialize the single account application instance
mSingleAccountApp = application;
loadAccount();
}
@Override
public void onError(MsalException exception) {
// Handle any errors that occur during initialization
displayError(exception);
}
}
);
このコードは、設定ファイル auth_config_single_account.jsonを使用して、単一アカウントの公開クライアント アプリケーションを作成します。 アプリケーションが正常に作成されると、インスタンスが mSingleAccountApp
に割り当てられ、 loadAccount()
メソッドが呼び出されます。 作成中にエラーが発生した場合は、displayError(exception) メソッドを呼び出してエラーを処理します。
必ず import ステートメントを含めます。 Android Studio では、自動的に import ステートメントが含められます。