チュートリアル: 認証用に Android (Kotlin) アプリを準備する

これは、Android (Kotlin) アプリに Android 用の Microsoft Authentication Library (MSAL) を追加する方法を示すチュートリアル シリーズの 2 番目のチュートリアルです。 MSAL により、Android アプリケーションが Microsoft Entra でユーザーを認証できます。

このチュートリアルでは、次のことについて説明します。

  • MSAL の依存関係を追加する。
  • 構成を追加する...

前提条件

MSAL の依存関係を追加する

Android プロジェクトに MSAL 依存関係を追加するには、次の手順に従います。

  1. Android Studio で自分のプロジェクトを開くか、新しいプロジェクトを作成します。

  2. アプリケーションの 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 の実装と、場合によっては、その他の依存関係が指定されます。

  3. Android Studio で、[ファイル]>[プロジェクトを Gradle のファイルと同期する] の順に選択します。

構成を追加する

JSON 構成設定を使用して、アプリケーション (クライアント) ID などの必要なテナント識別子を MSAL SDK に渡します。

次の手順を使用して構成ファイルを作成します。

  1. Android Studio のプロジェクト ウィンドウで、app\src\main\res に移動します。

  2. [res] を右クリックして、[新規]>[ディレクトリ] を選択します。 新しいディレクトリの名前に「raw」と入力し、[OK] を選択します。

  3. app\src\main\res\raw で、auth_config_ciam_auth.json という名前の新しい JSON ファイルを作成します。

  4. 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 を使用します。 テナントのサブドメイン名を知らない場合は、テナントの詳細を読み取る方法をご確認ください
  5. /app/src/main/AndroidManifest.xml ファイルを開きます。

  6. 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 ドメイン名にリダイレクトされず、あなたのドメインにとどまります。

カスタム ドメインを使用するには、以下の手順を実行します。

  1. 外部テナントのアプリに対してカスタム URL ドメインを有効にする」の手順を実行して、外部テナントに対してカスタム URL ドメインを有効にします。

  2. auth_config_ciam_auth.json ファイルを開きます。

    1. 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 がわからない場合は、テナントの詳細を読み取る方法を確認してください。
    2. [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 ステートメントが含められます。

次のステップ

チュートリアル: Android (Kotlin) モバイル アプリでユーザーをサインインさせる