チュートリアル: 認証用に Android (Kotlin) アプリを準備する
これは、Android (Kotlin) アプリに Android 用の Microsoft Authentication Library (MSAL) を追加する方法を示すチュートリアル シリーズの 2 番目のチュートリアルです。 MSAL により、Android アプリケーションが Microsoft Entra でユーザーを認証できます。
このチュートリアルでは、次のことについて説明します。
- MSAL の依存関係を追加する。
- 構成を追加する...
前提条件
- Android Studio
- まだ行っていない場合は、「チュートリアル: Android (Kotlin) モバイル アプリを登録して構成する」の手順に従い、外部テナントにアプリを登録します。
- Android プロジェクト。 Android プロジェクトがない場合は、作成します。
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 が含まれています。 さらに、Maven Central と Google リポジトリが利用されます。 dependencies セクションでは、MSAL バージョン 5 の実装と、場合によっては、その他の依存関係が指定されます。Android Studio で、[ファイル]>[プロジェクトを Gradle のファイルと同期する] の順に選択します。
構成を追加する
JSON 構成設定を使用して、アプリケーション (クライアント) ID などの必要なテナント識別子を MSAL SDK に渡します。
次の手順を使用して構成ファイルを作成します。
Android Studio のプロジェクト ウィンドウで、app\src\main\res に移動します。
[res] を右クリックして、[新規]>[ディレクトリ] を選択します。 新しいディレクトリの名前に「
raw
」と入力し、[OK] を選択します。app\src\main\res\raw で、
auth_config_ciam_auth.json
という名前の新しい JSON ファイルを作成します。auth_config_ciam_auth.json
ファイルに、次の MSAL 構成を追加します。{ "client_id" : "Enter_the_Application_Id_Here", "authorization_user_agent" : "DEFAULT", "redirect_uri" : "Enter_the_Redirect_Uri_Here", "account_mode" : "SINGLE", "authorities" : [ { "type": "CIAM", "authority_url": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/Enter_the_Tenant_Subdomain_Here.onmicrosoft.com/" } ] }
JSON 構成ファイルでは、Android アプリケーションのさまざまな設定が指定されます。 これには、クライアント ID、承認ユーザー エージェント、リダイレクト URI、アカウント モードが含まれます。 さらに、認証の機関が定義され、種類と機関の URL が指定されます。
次のプレースホルダーを、Microsoft Entra 管理センターから取得したテナント値に置き換えます。
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 ファイルを開きます。
AndroidManifest.xml で、次のデータ仕様を意図フィルターに追加します。
<data android:host="ENTER_YOUR_PROJECT_PACKAGE_NAME_HERE" android:path="/ENTER_YOUR_SIGNATURE_HASH_HERE" android:scheme="msauth" />
次のプレースホルダーを見つけます。
- ENTER_YOUR_PROJECT_PACKAGE_NAME_HERE: これを Android のプロジェクト パッケージ名に置き換えます。
- ENTER_YOUR_SIGNATURE_HASH_HERE: これを、これを、プラットフォーム リダイレクト URL を追加したときに前に生成したシグネチャ ハッシュに置き換えます。
カスタム URL ドメインを使用する (省略可能)
カスタム ドメインを使用して、認証 URL を完全にブランド化します。 ユーザーの視点から見ると、認証プロセスの間、ユーザーは ciamlogin.com ドメイン名にリダイレクトされず、あなたのドメインにとどまります。
カスタム ドメインを使用するには、以下の手順を実行します。
「外部テナントのアプリに対してカスタム URL ドメインを有効にする」の手順を実行して、外部テナントに対してカスタム URL ドメインを有効にします。
auth_config_ciam_auth.json ファイルを開きます。
authority_url
プロパティの値を https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here に更新します。Enter_the_Custom_Domain_Here
を実際のカスタム URL ドメインに、Enter_the_Tenant_ID_Here
を実際のテナント ID に置き換えます。 テナント ID がわからない場合は、テナントの詳細を読み取る方法を確認してください。- [Enter_the_Custom_Domain_Here] という値を持つ
knownAuthorities
プロパティを追加します。
auth_config_ciam_auth.json ファイルを変更した後、カスタム URL ドメインが login.contoso.com で、テナント ID が aaaabbbb-0000-cccc-1111-dddd2222eeee の場合、ファイルは次のスニペットのようになるはずです。
{
"client_id" : "Enter_the_Application_Id_Here",
"authorization_user_agent" : "DEFAULT",
"redirect_uri" : "Enter_the_Redirect_Uri_Here",
"account_mode" : "SINGLE",
"authorities" : [
{
"type": "CIAM",
"authority_url": "https://login.contoso.com/aaaabbbb-0000-cccc-1111-dddd2222eeee",
"knownAuthorities": ["login.contoso.com"]
}
]
}
MSAL SDK インスタンスを作成する
MSAL SDK インスタンスを初期化するには、次のコードを使用します。
private suspend fun initClient(): ISingleAccountPublicClientApplication = withContext(Dispatchers.IO) {
return@withContext PublicClientApplication.createSingleAccountPublicClientApplication(
this@MainActivity,
R.raw.auth_config_ciam_auth
)
}
このコードにより、単一アカウントのパブリック クライアント アプリケーションが非同期的に初期化されます。 これにより、指定された認証構成ファイルが使用され、I/O ディスパッチャーで実行されます。
必ず import ステートメントを含めます。 Android Studio では、自動的に import ステートメントが含められます。