Share via


ブローカーを使用する Android アプリケーションを ADAL.NET から MSAL.NET に移行する

Xamarin Android アプリで現在 Azure Active Directory Authentication Library for .NET (ADAL.NET) と認証ブローカーが使用されている場合は、この時点で Microsoft Authentication Library for .NET (MSAL.NET) に移行します。

前提条件

手順 1:ブローカーを有効にします

現在の ADAL でのコード:MSAL での該当部分:
ADAL.NET では、ブローカーのサポートは認証ごとのコンテキストで有効になっています。

ブローカーを呼び出すには、PlatformParameters コンストラクターで useBrokertrue に設定する必要がありました。

public PlatformParameters(
        Activity callerActivity,
        bool useBroker)

Android 用プラットフォーム固有のページ レンダラー コードでは、useBroker フラグを true に設定します。

page.BrokerParameters = new PlatformParameters(
        this,
        true,
        PromptBehavior.SelectAccount);

次に、トークンを取得する呼び出しで、次のパラメーターを含めます。

AuthenticationResult result =
        await
            AuthContext.AcquireTokenAsync(
                Resource,
                ClientId,
                new Uri(RedirectURI),
                platformParameters)
                .ConfigureAwait(false);
MSAL.NET では、ブローカーのサポートは PublicClientApplication ごとに有効になります。

(既定で true に設定されている) WithBroker() パラメーターを使用して、ブローカーを呼び出します。

var app = PublicClientApplicationBuilder
                .Create(ClientId)
                .WithBroker()
                .WithRedirectUri(redirectUriOnAndroid)
                .Build();

次に、AcquireToken 呼び出しで次の手順に従います。

result = await app.AcquireTokenInteractive(scopes)
             .WithParentActivityOrWindow(App.RootViewController)
             .ExecuteAsync();

手順 2:アクティビティを設定する

ADAL.NET で、手順 1: ブローカーを有効にするで示したように、PlatformParameters の一部としてアクティビティ (通常は MainActivity) を渡しました。

MSAL.NET でもアクティビティが使用されますが、ブローカーを使用せずに通常どおりに Android を使用する場合は必要ありません。 ブローカーを使用するには、ブローカーから応答が送受信されるようにアクティビティを設定します。

現在の ADAL でのコード:MSAL での該当部分:
アクティビティは、Android 固有のプラットフォームで PlatformParameters に渡されます。
page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);

MSAL.NET で Android のアクティビティを設定するには、次の 2 つの操作を行います。

  1. MainActivity.cs で、App.RootViewControllerMainActivity に設定して、アクティビティでブローカーが呼び出されるようにします。

    正しく設定されていないと、「"Activity_required_for_android_broker":"Activity is null, so MSAL.NET cannot invoke the Android broker. See https://aka.ms/Brokered-Authentication-for-Android"」というエラーが表示されることがあります。

  2. AcquireTokenInteractive の呼び出しで、.WithParentActivityOrWindow(App.RootViewController) を使用し、使用するアクティビティへの参照を渡します。 この例では、MainActivity を使用します。

例:

App.cs の場合:

   public static object RootViewController { get; set; }

MainActivity.cs の場合:

   LoadApplication(new App());
   App.RootViewController = this;

AcquireToken 呼び出しの場合:

result = await app.AcquireTokenInteractive(scopes)
             .WithParentActivityOrWindow(App.RootViewController)
             .ExecuteAsync();

次のステップ

Xamarin で MSAL.NET を使用する際の Android 固有の考慮事項の詳細については、MSAL.NET を使用した Xamarin Android の構成要件とトラブルシューティング ヒントに関するページを参照してください。