ブローカーを使用する Android アプリケーションを ADAL.NET から MSAL.NET に移行する
[アーティクル] 10/25/2023
6 人の共同作成者
フィードバック
この記事の内容
Xamarin Android アプリで現在 Azure Active Directory Authentication Library for .NET (ADAL.NET) と認証ブローカー が使用されている場合は、この時点で Microsoft Authentication Library for .NET (MSAL.NET) に移行します。
前提条件
手順 1:ブローカーを有効にします
現在の ADAL でのコード: MSAL での該当部分:
ADAL.NET では、ブローカーのサポートは認証ごとのコンテキストで有効になっています。
ブローカーを呼び出すには、PlatformParameters
コンストラクターで useBroker
を true に設定する必要がありました。
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 つの操作を行います。
MainActivity.cs
で、App.RootViewController
を MainActivity
に設定して、アクティビティでブローカーが呼び出されるようにします。
正しく設定されていないと、「"Activity_required_for_android_broker":"Activity is null, so MSAL.NET cannot invoke the Android broker. See https://aka.ms/Brokered-Authentication-for-Android"
」というエラーが表示されることがあります。
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 の構成要件とトラブルシューティング ヒント に関するページを参照してください。