Microsoft Authenticator を使用する iOS アプリケーションを ADAL.NET から MSAL.NET に移行する
あなたは Azure Active Directory Authentication Library for .NET (ADAL.NET) と iOS ブローカーを使用しています。 リリース 4.3 以降の iOS 上でブローカーをサポートする Microsoft Authentication Library for .NET (MSAL.NET) に移行するときが来ました。
どこから始めればよいでしょうか。 この記事では、お使いの Xamarin iOS アプリを ADAL から MSAL に移行する方法について説明します。
前提条件
この記事では、iOS ブローカーと統合されている Xamarin iOS アプリが既にあることを前提としています。 そうでない場合は、MSAL.NET に直接移動し、そこでブローカーの実装を開始します。 MSAL.NET で新しいアプリケーションを使用して iOS ブローカーを呼び出す方法については、こちらのドキュメントを参照してください。
バックグラウンド
ブローカーとは
ブローカーは、Android および iOS に Microsoft が提供するアプリケーションです (iOS と Android については Microsoft Authenticator アプリに関するページ、Android については Intune ポータル サイト アプリを参照してください)。
これでは、次が可能です。
- シングル サインオン。
- デバイスの識別。これは一部の条件付きアクセス ポリシーに必要です。 詳細については、デバイス管理に関する記事を参照してください。
- アプリケーションの識別の検証。これは一部のエンタープライズ シナリオでも必要です。 詳細については、Intune モバイル アプリケーション管理 (MAM) に関する記事を参照してください。
ADAL から MSAL への移行
手順 1:ブローカーを有効にします
現在の ADAL でのコード: | MSAL での該当部分: |
ADAL.NET では、ブローカーのサポートは認証ごとのコンテキストで有効になりました。 既定では無効になっています。 ブローカーを呼び出すには、
また、この例では、プラットフォーム固有の iOS 用のページ レンダラーのコードの フラグを
次に、トークンを取得する呼び出しで、次のパラメーターを含めます。
|
MSAL.NET では、ブローカーのサポートは PublicClientApplication ごとに有効になります。 既定では無効になっています。 これを有効にするには、 (既定で true に設定されている)
トークンの取得の呼び出しで、次のように記述します。
|
手順 2:UIViewController() を設定する
ADAL.NET で、PlatformParameters
の一部として UIViewController を渡しました (手順 1 の例を参照してください)。MSAL.NET では、開発者に柔軟性を持たせるためにオブジェクト ウィンドウが使用されますが、通常の iOS の使用では必要ありません。 ブローカーを使用するには、ブローカーから応答を送受信するために、オブジェクト ウィンドウを設定します。
現在の ADAL でのコード: | MSAL での該当部分: |
UIViewController は iOS 固有のプラットフォームで
|
MSAL.NET で、iOS のオブジェクト ウィンドウを設定するには、次の 2 つの操作を行います。
例:
トークンの取得の呼び出しで、次のように記述します。
|
手順 3:コールバックを処理するように AppDelegate を更新する
ADAL と MSAL の両方からブローカーが呼び出され、ブローカーでは AppDelegate
クラスの OpenUrl
メソッドを使用してアプリケーションにコールバックされます。 詳しくは、こちらのドキュメントをご覧ください。
ADAL.NET と MSAL.NET の間に変更はありません。
手順 4:URL スキームを登録する
ADAL.NET と MSAL.NET では、URL を使用してブローカーを呼び出し、ブローカーの応答をアプリに返します。 次のように、お使いのアプリの Info.plist
ファイルに URL スキームを登録します。
現在の ADAL でのコード: | MSAL での該当部分: |
URL スキームは、お使いのアプリに対して一意です。 |
.
がプレフィックスとして、お使いの 例:
注意 この URL スキームは、ブローカーから応答を受け取るときにアプリを一意に識別するために使用されるリダイレクト URI の一部になります。 |
手順 5:LSApplicationQueriesSchemes セクションにブローカー識別子を追加する
ADAL.NET と MSAL.NET は、いずれも -canOpenURL:
を使用してブローカーがデバイスにインストールされているかどうかを確認します。 info.plist ファイルの LSApplicationQueriesSchemes セクションには、次のように iOS ブローカー用の正しい識別子を追加します。
現在の ADAL でのコード: | MSAL での該当部分: |
用途
|
用途
|
手順 6:Azure portal でリダイレクト URI を登録する
ADAL.NET と MSAL.NET のいずれでも、ブローカーをターゲットとするときにリダイレクト URI に対してさらに要件が追加されます。 Azure portal でお使いのアプリケーションにリダイレクト URI を追加します。
現在の ADAL でのコード: | MSAL での該当部分: |
例:
|
例:
|
Azure portal でリダイレクト URI を登録する方法の詳細については、「手順 7:アプリの登録にリダイレクト URI を追加する」を参照してください。
手順 7:Entitlements.plist を設定する
Entitlements.plist ファイルでキーチェーン アクセスを有効にします。
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.microsoft.adalcache</string>
</array>
キーチェーン アクセスの有効化の詳細については、「キーチェーン アクセスの有効化」を参照してください。
次のステップ
「MSAL.NET を使用する Xamarin iOS に固有の考慮事項」を参照してください。