ネイティブ認証を使用してサンプル iOS (Swift) アプリでユーザーをサインインする
このガイドでは、Microsoft Entra 外部 ID を使用したサインアップおよびサインインのシナリオを示す iOS サンプル アプリケーションを実行する方法について説明します。
この記事では、次のことについて説明します。
- 外部テナントにアプリケーションを登録する。
- パブリック クライアントとネイティブ認証フローを有効にします。
- ユーザー フローを外部テナントに作成する。
- アプリケーションをユーザー フローに関連付けます。
- 独自の外部テナントの詳細を使用するように、サンプルのネイティブ iOS アプリケーションを更新します。
- サンプルのネイティブ iOS アプリケーションを実行してテストします。
前提条件
- Xcode
- 外部テナント。 まだお持ちでない場合は、無料試用版にサインアップしてください
アプリケーションの登録
Microsoft Entra を使用してアプリケーションでユーザーをサインインできるようにするには、作成するアプリケーションを Microsoft Entra 外部 ID に認識させる必要があります。 アプリの登録によって、アプリと Microsoft Entra の間に信頼関係が確立されます。 アプリケーションを登録すると、外部 ID によって、アプリケーション (クライアント) ID と呼ばれる一意識別子が生成されます。これは、認証要求を作成するときにアプリを識別するために使用される値です。
Microsoft Entra 管理センターにアプリを登録する方法を次の手順に示します。
アプリケーション開発者以上として Microsoft Entra 管理センターにサインインします。
複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコン を使用し、[ディレクトリとサブスクリプション] メニューから外部テナントに切り替えます。
[ID]>[アプリケーション]>[アプリの登録] を参照します。
[+ 新規登録] を選択します。
表示される [アプリケーションの登録] ページで、次のようにします。
- アプリのユーザーに表示されるわかりやすいアプリケーションの [名前] を入力します (例: ciam-client-app)。
- [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。
[登録] を選択します。
登録が成功すると、アプリケーションの [概要] ペインが表示されます。 アプリのソース コードで使用するアプリケーション (クライアント) ID を記録します。
パブリック クライアントとネイティブ認証フローの有効化
このアプリがパブリック クライアントであり、ネイティブ認証を使用できることを指定するには、パブリック クライアントとネイティブ認証フローを有効にします。
- アプリ登録ページから、パブリック クライアントとネイティブ認証フローを有効にしたいアプリ登録を選択します。
- [管理] で、 [認証] を選択します。
- [詳細設定] で、パブリック クライアント フローを許可します。
- [次のモバイルとデスクトップ フローを有効にする] で、[はい] を選択します。
- [ネイティブ認証を有効にする] で、[はい] を選択します。
- [保存] ボタンを選択します。
管理者の同意を与える
[アプリの登録] ページで、作成したアプリケーション ("ciam-client-app" など) を選択して、その [概要] ページを開きます。
[管理] の下にある [API のアクセス許可] を選択します。 構成済みアクセス許可一覧から、お使いのアプリケーションに User.Read アクセス許可が割り当てられています。 ただし、テナントが外部テナントであるため、コンシューマー ユーザー自身はこのアクセス許可に同意できません。 管理者は、テナント内のすべてのユーザーに代わってこのアクセス許可に同意する必要があります。
- [<ご使用のテナント名> に管理者の同意を与えます] を選択してから、[はい] を選択します。
- [最新の情報に更新] を選択し、両方のスコープの [状態] に "<ご使用のテナント名> に付与されました" と表示されていることを確認します。
ユーザー フローを作成する
以下の手順に従って、ユーザー フローを作成します。
アプリケーション開発者以上として Microsoft Entra 管理センターにサインインします。
複数のテナントにアクセスできる場合は、外部テナントを含むディレクトリを使用してください。
- ツール バーの [ディレクトリ + サブスクリプション] アイコンを選択します。
- [ポータルの設定] | [ディレクトリ + サブスクリプション] ページの [ディレクトリ名] の一覧で外部テナント ディレクトリを見つけて、[切り替え] を選択します。
サイドバー メニューで、[ID] を選択します。
[外部 ID]>[ユーザー フロー] の順に選択します。
[+ 新しいユーザー フロー] を選択します。
[作成] ページで、次のようにします。
ユーザー フローの [名前] ("SignInSignUpSample" など) を入力します。
[ID プロバイダー] の一覧で、[メール アカウント] を選択します。 この ID プロバイダーを使用すると、ユーザーが自分のメール アドレスを使用してサインインまたはサインアップできます。
[メール アカウント] で、2 つのオプションのいずれかを選択できます。 このチュートリアルでは、[Email with password] (メール アドレスとパスワード) を選択します。
- Email とパスワード: 新しいユーザーは、サインイン名としてメール アドレスを、その最初の要素の認証情報としてパスワードを使用してサインアップおよびサインインできます。
- [メールのワンタイム パスコード]: 新しいユーザーは、サインイン名としてメール アドレスを、資格情報の第一段階要素としてメールのワンタイム パスコードを使用してサインアップおよびサインインできます。 このオプションをユーザー フロー レベルで使用可能にするには、ワンタイム パスコード (OTP) のメール送信をテナント レベルで有効にする必要があります ([すべての ID プロバイダー]、[ワンタイム パスコードのメール送信] で[構成済み] を選び[はい] を選択してから [保存] を選択します)。
[ユーザー属性] で、サインアップ時にユーザーから収集する属性を選択できます。 このガイドでは、[国/地域] と [市区町村] を選択します。
[作成] を選択します 新しいユーザー フローは [ユーザー フロー] の一覧に表示されます。 必要に応じて、ページを更新してください。
Web アプリケーションをユーザー フローに関連付ける
アプリが顧客ユーザーに使用されるとき、サインアップまたはサインインのエクスペリエンスが表示されるようにするには、アプリを何らかのユーザー フローに関連付ける必要があります。 複数のアプリケーションをユーザー フローに関連付けることができますが、1 つのアプリケーションを関連付けることができるユーザー フローは 1 つだけです。
サイドバー メニューで、[ID] を選択します。
[External Identities]、[User flows] (ユーザー フロー) の順に選択します。
[ユーザー フロー] ページで、前に作成した [ユーザー フロー名] (SignInSignUpSample など) を選びます。
[使用] で、[アプリケーション] を選択します。
[アプリケーションの追加] をクリックします。
一覧からアプリケーション ("ciam-client-app" など) を選択するか、検索ボックスを使用してアプリケーションを見つけ、それを選択します。
[選択] を選択します。
アプリをユーザー フローと関連付けたら、Microsoft Entra 管理センター内からアプリケーションでのユーザーのサインアップまたはサインイン エクスペリエンスをシミュレートして、ユーザー フローをテストできます。 そのためには、「サインアップとサインインのユーザー フローをテストする」の手順を使用します。
サンプル iOS アプリケーションをクローンする
ターミナルを開き、コードを保存するディレクトリに移動します。
次のコマンドを実行して、GitHub から iOS アプリケーションをクローンします。
git clone https://github.com/Azure-Samples/ms-identity-ciam-native-auth-macos-sample.git
リポジトリが複製されたディレクトリに移動します。
cd ms-identity-ciam-native-auth-macos-sample
サンプル iOS アプリケーションを構成する
Xcode で、NativeAuthSampleAppMacOS.xcodeproj プロジェクトを開きます。
NativeAuthSampleAppMacOS/Configuration.swift ファイルを開きます。
次のプレースホルダーを見つけます。
Enter_the_Application_Id_Here
を、前に登録したアプリのアプリケーション (クライアント) ID に置き換えます。Enter_the_Tenant_Subdomain_Here
を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、テナントのプライマリ ドメインがcontoso.onmicrosoft.com
の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください。
Note
ビルドするスキームとビルドした製品を実行する場所を必ず選択してください。 各スキームには、使用可能な宛先を表す実際のデバイスまたはシミュレートされたデバイスの一覧が含まれています。
サンプル iOSアプリケーションを実行してテストする
コードをビルドして実行するには、Xcode のメニューの [製品] から [実行]を選択します。 ビルドが成功すると、Xcode はシミュレーターでサンプル アプリを起動します。
このガイドでは、メールとパスワード の使用状況をテストします。 有効なメールアドレスとパスワードを入力し、[サインアップ] を選択して、コード送信画面を起動します。
前の画面でメール アドレスを入力すると、アプリケーションから確認コードが送信されます。 受信したコードを送信すると、アプリケーションによって前の画面に戻り、自動的にサインインします。