Microsoft Graph アプリケーションを登録する
Microsoft Graph を使用すると、顧客のユーザー アカウントやカスタム ポリシーなど、Azure AD B2C テナント内の多くのリソースを管理できます。 Microsoft Graph API を呼び出すスクリプトまたはアプリケーションを作成することによって、次のようなテナント管理タスクを自動化できます。
- 既存のユーザー ストアを Azure AD B2C テナントに移行する
- Azure DevOps で Azure Pipelines を使用してカスタム ポリシーをデプロイし、カスタム ポリシー キーを管理する
- 自分のページでユーザー登録をホストし、バックグラウンドで Azure AD B2C ディレクトリにユーザー アカウントを作成する
- アプリケーションの登録を自動化する
- 監査ログを取得する
次のセクションでは、Microsoft Graph API を使用して Azure AD B2C ディレクトリ内のリソースの管理を自動化するための準備について説明します。
Microsoft Graph API の相互作用モード
Microsoft Graph API を使用して Azure AD B2C テナントのリソースを管理する際は、次の 2 つの通信モードを使用できます。
対話型 - 一度だけ実行されるタスクに適切です。B2C テナントの管理者アカウントを使用して管理タスクを実行します。 このモードでは、Microsoft Graph API を呼び出す前に、管理者は自分の資格情報を使用してサインインする必要があります。
自動 - スケジュールされた、または継続的に実行されるタスクの場合、この方法では、管理タスクを実行するために必要なアクセス許可で構成したサービス アカウントが使用されます。 Azure AD B2C に "サービスアカウント" を作成するには、アプリケーションとスクリプトが "アプリケーション (クライアント) ID" と "OAuth 2.0 のクライアント資格情報" 付与を使用した認証に使用するアプリケーションを登録します。 この場合、アプリケーションは、前に説明した対話型の方法のように管理者ユーザーとしてではなく、それ自体として Microsoft Graph API を呼び出します。
自動の相互作用シナリオを有効にするには、次のセクションで示すアプリケーション登録を作成します。
Azure AD B2C 認証サービスは、OAuth 2.0 クライアント資格情報付与フロー (現在パブリック プレビュー段階) を直接サポートしていますが、Microsoft Graph API 経由で Azure AD B2C リソースを管理するために使用することはできません。 ただし、Azure AD B2C テナントのアプリケーション用に、Microsoft Entra ID と Microsoft ID プラットフォーム /token
エンドポイントを使用してクライアント資格情報フローを設定することができます。
管理アプリケーションを登録する
スクリプトとアプリケーションが Microsoft Graph API と対話して Azure AD B2C リソースを管理できるようにするには、必要な API アクセス許可を付与するアプリケーション登録を Azure AD B2C テナントに作成する必要があります。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal で、 [Azure AD B2C] を検索して選択します。
- [アプリの登録] を選択し、 [新規登録] を選択します。
- アプリケーションの名前を入力します。 たとえば、managementapp1 と入力します。
- [この組織のディレクトリ内のアカウントのみ] を選択します。
- [アクセス許可] で、 [openid と offline_access アクセス許可に対して管理者の同意を付与します] チェック ボックスをオフにします。
- [登録] を選択します。
- アプリケーションの概要ページに表示されている [アプリケーション (クライアント) ID] を記録します。 この値は、後の手順で使用します。
API アクセスの許可
アプリケーションから Microsoft Graph のデータにアクセスするには、登録されているアプリケーションに関連するアプリケーションのアクセス許可を付与します。 アプリケーションの有効なアクセス許可は、そのアクセス許可が暗示する完全なレベルの権限になります。 たとえば、Azure AD B2C テナント内のすべてのユーザーを作成、読み取り、更新、削除するには、User.ReadWrite.All アクセス許可を追加します。
注意
User.ReadWrite.All アクセス許可には、ユーザー アカウントのパスワードを更新する機能は含まれていません。 アプリケーションでユーザー アカウントのパスワードを更新する必要がある場合は、ユーザー管理者ロールを付与します。 ユーザー管理者ロールを付与する場合、User.ReadWrite.All は必要ありません。 ユーザー管理者ロールには、ユーザーの管理に必要なすべてが含まれています。
アプリケーションに複数のアプリケーションのアクセス許可を与えることができます。 たとえば、アプリケーションで Azure AD B2C テナント内のグループを管理する必要がある場合は、Group.ReadWrite.All アクセス許可も追加します。
アプリの登録
- [管理] の下にある [API のアクセス許可] を選択します。
- [構成されたアクセス許可] の下で [アクセス許可の追加] を選択します。
- [Microsoft API] タブを選択し、 [Microsoft Graph] を選択します。
- [アプリケーションのアクセス許可] を選択します。
- 適切なアクセス許可グループを展開し、管理アプリケーションに付与するアクセス許可のチェック ボックスをオンにします。 例:
- [User](ユーザー)>[User.ReadWrite.All] : ユーザー移行またはユーザー管理のシナリオの場合。
- [Group](グループ)>[Group.ReadWrite.All] : グループの作成、グループ メンバーシップの読み取りと更新、グループの削除を行う場合。
- [AuditLog]>[AuditLog.Read.All] :ディレクトリの監査ログを読み取る場合。
- [Policy](ポリシー)>[Policy.ReadWrite.TrustFramework] :継続的インテグレーション/継続的デリバリー (CI/CD) のシナリオの場合。 たとえば、Azure Pipelines を使用したカスタム ポリシーの展開などです。
- [アクセス許可の追加] を選択します. 指示に従って、数分待ってから次の手順に進みます。
- [<テナント名> に管理者の同意を与えます] を選択します。
- クラウド アプリケーション管理者 ロールが割り当てられている Azure AD B2C テナントのアカウントでサインインし、[(お使いのテナント名) に管理者の同意を与えます] を選択します。
- [更新] を選択し、[状態] に、"... に付与されました" と表示されていることを確認します。 アクセス許可が反映されるまでに数分かかる場合があります。
[省略可能] ユーザー管理者ロールを付与する
アプリケーションまたはスクリプトでユーザーのパスワードを更新する必要がある場合は、ユーザー管理者ロールをアプリケーションに割り当ててください。 ユーザー管理者ロールには、アプリケーションに付与する固定されたアクセス許可のセットがあります。
ユーザー管理者ロールを追加するには、次の手順を実行します。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure AD B2C を検索して選択します。
- [管理] で [ロールと管理者] を選択します。
- [ユーザー管理者] ロールを選択します。
- [割り当ての追加] を選択します。
- [選択] テキスト ボックスに、前に登録したアプリケーションの名前または ID (たとえば、managementapp1) を入力します。 検索結果に表示されたら、アプリケーションを選択します。
- [追加] を選択します。 アクセス許可が完全に反映されるまでに数分かかる場合があります。
クライアント シークレットを作成する
アプリケーションでは、トークンを要求するときに ID を証明するためにクライアント シークレットが必要です。 クライアント シークレットを追加するには、次の手順のようにします。
- [管理] で、[証明書とシークレット] を選択します。
- [新しいクライアント シークレット] を選択します。
- [説明] ボックスにクライアント シークレットの説明を入力します。 たとえば、clientsecret1 のようにします。
- [有効期限] で、シークレットが有効な期間を選択してから、 [追加] を選択します。
- シークレットの値を記録します。 この値は、後の手順で構成に使用します。
次のステップ
管理アプリケーションを登録し、必要なアクセス許可を付与したので、お使いのアプリケーションとサービス (たとえば、Azure Pipelines) はその資格情報とアクセス許可を使用して、Microsoft Graph API と対話することができます。