チュートリアル: iOS/macOS アプリをネイティブ認証用に準備する
適用対象: iOS (Swift) macOS (Swift)
このチュートリアルでは、Microsoft Authentication Library (MSAL) ネイティブ認証 SDK フレームワークを iOS/macOS Swift アプリに追加する方法について説明します。
このチュートリアルでは、次の作業を行う方法について説明します。
- MSAL フレームワークを iOS/macOS アプリに追加します。
- SDK インスタンスを作成します。
前提条件
- Xcode
- まだ行っていない場合は、「ネイティブ認証を使用してサンプル iOS (Swift) モバイル アプリでユーザーをサインインする」の手順に従い、外部テナントにアプリを登録します。 次の手順を完了してください。
- アプリケーションを登録します。
- パブリック クライアントとネイティブ認証フローを有効にします。
- API のアクセス許可を付与します。
- ユーザー フローを作成します。
- アプリをユーザー フローに関連付けます。
- iOS/macOS プロジェクト
MSAL フレームワークを iOS/macOS アプリに追加する
- Xcode で iOS/macOS プロジェクトを開きます。
- [パッケージの依存関係を追加...] を [ファイル] メニューから選択します。
https://github.com/AzureAD/microsoft-authentication-library-for-objc
をパッケージ URL として入力し、[パッケージの追加] を選択します- 新しいキーチェーン グループをプロジェクトの [機能] に追加します。 iOS では
com.microsoft.adalcache
を使用し、macOS ではcom.microsoft.identity.universalstorage
を使用します。
自分のプロジェクトに MSAL を追加するための詳細およびその他のメカニズムについては、「プロジェクトの Readme ファイル」を参照してください。
SDK インスタンスを作成する
ViewController
クラスの上部にimport MSAL
を追加して、ビュー コントローラーに MSAL ライブラリをインポートします。viewDidLoad()
関数の直前に次のコードを追加して、ViewController
クラスにnativeAuth
メンバー変数を追加します。var nativeAuth: MSALNativeAuthPublicClientApplication!
次に、次のコードを
viewDidLoad()
関数に追加します。do { nativeAuth = try MSALNativeAuthPublicClientApplication( clientId: "Enter_the_Application_Id_Here", tenantSubdomain: "Enter_the_Tenant_Subdomain_Here", challengeTypes: [.OOB] ) print("Initialized Native Auth successfully.") } catch { print("Unable to initialize MSAL \(error)") }
次の値を Microsoft Entra 管理センターから取得した値に置き換えます。
Enter_the_Application_Id_Here
の値を見つけ、前に登録したアプリのアプリケーション (クライアント) ID に置き換えます。Enter_the_Tenant_Subdomain_Here
の値を見つけ、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、テナントのプライマリ ドメインがcontoso.onmicrosoft.com
の場合は、contoso
を使用します。 ディレクトリ (テナント) サブドメインがない場合は、テナントの詳細を読み取る方法を確認してください。チャレンジ型は、アプリがサポートしている認証方法について Microsoft Entra に通知するために使用する値の一覧です。
- メールによるワンタイム パスコードを使ったサインアップおよびサインイン フローについては、
[.OOB]
を使用します。 - メールとパスワードを使ったサインアップおよびサインイン フローについては、
[.OOB, .password]
を使用します。 - セルフサービス パスワード リセット (SSPR) については、
[.OOB]
を使用します。
チャレンジ型の詳細をご覧ください。
- メールによるワンタイム パスコードを使ったサインアップおよびサインイン フローについては、
ビルドするには、プロジェクトのツール バーで [製品]>[ビルド] を選択します。
省略可能: ログ記録の構成
MSAL には、ログ記録を有効にし構成するために使用できるログ記録 API が用意されています。 MSAL からのすべてのデバッグ出力を表示するには、viewDidLoad()
関数の先頭に次のコードを追加します。
MSALGlobalConfig.loggerConfig.logLevel = .verbose
MSALGlobalConfig.loggerConfig.setLogCallback { logLevel, message, containsPII in
if !containsPII {
print("MSAL: \(message ?? "")")
}
}
これにより、MSAL からすべてのデバッグ ログが出力されます。これは、問題の診断やネイティブ認証フローのしくみの学習に役立ちます。 ログ レベルの構成とベスト プラクティスの詳細については、「iOS/macOS 用の MSAL でのログ記録」を参照してください。