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 を呼び出します。

自動の相互作用シナリオを有効にするには、次のセクションで示すアプリケーション登録を作成します。

OAuth 2.0 クライアント資格情報付与フローは現在 Azure AD B2C 認証サービスによって直接サポートされていませんが、Azure AD B2C テナント内のアプリケーション向けに Azure AD と Microsoft ID プラットフォーム/トークンエンド ポイントを使用して、クライアント資格情報フローを設定できます。 Azure AD B2C テナントは、Azure AD のエンタープライズ テナントと同じいくつかの機能を持っています。

管理アプリケーションを登録する

スクリプトとアプリケーションが Microsoft Graph API と対話して Azure AD B2C リソースを管理できるようにするには、必要な API アクセス許可を付与するアプリケーション登録を Azure AD B2C テナントに作成する必要があります。

  1. Azure portal にサインインします。
  2. ご自分の Azure AD B2C テナントが含まれるディレクトリを必ず使用してください。 ポータル ツールバーの [Directories + subscriptions](ディレクトリ + サブスクリプション) アイコンを選択します。
  3. [ポータルの設定] | [Directories + subscriptions](ディレクトリ + サブスクリプション) ページの [ディレクトリ名] の一覧で自分の Azure AD B2C ディレクトリを見つけて、 [切り替え] を選択します。
  4. Azure portal で、 [Azure AD B2C] を検索して選択します。
  5. [アプリの登録] を選択し、 [新規登録] を選択します。
  6. アプリケーションの名前を入力します。 たとえば、managementapp1 と入力します。
  7. [この組織のディレクトリ内のアカウントのみ] を選択します。
  8. [アクセス許可] で、 [openid と offline_access アクセス許可に対して管理者の同意を付与します] チェック ボックスをオフにします。
  9. [登録] を選択します。
  10. アプリケーションの概要ページに表示されている [アプリケーション (クライアント) ID] を記録します。 この値は、後の手順で使用します。

API アクセスの許可

アプリケーションから Microsoft Graph のデータにアクセスするには、登録されているアプリケーションに関連するアプリケーションのアクセス許可を付与します。 アプリケーションの有効なアクセス許可は、そのアクセス許可が暗示する完全なレベルの権限になります。 たとえば、Azure AD B2C テナント内のすべてのユーザーを作成読み取り更新削除するには、User.ReadWrite.All アクセス許可を追加します。

注意

User.ReadWrite.All アクセス許可には、ユーザー アカウントのパスワードを更新する機能は含まれていません。 アプリケーションでユーザー アカウントのパスワードを更新する必要がある場合は、ユーザー管理者ロールを付与します。 ユーザー管理者ロールを付与する場合、User.ReadWrite.All は必要ありません。 ユーザー管理者ロールには、ユーザーの管理に必要なすべてが含まれています。

アプリケーションに複数のアプリケーションのアクセス許可を与えることができます。 たとえば、アプリケーションで Azure AD B2C テナント内のグループを管理する必要がある場合は、Group.ReadWrite.All アクセス許可も追加します。

  1. [管理] の下にある [API のアクセス許可] を選択します。
  2. [構成されたアクセス許可] の下で [アクセス許可の追加] を選択します。
  3. [Microsoft API] タブを選択し、 [Microsoft Graph] を選択します。
  4. [アプリケーションのアクセス許可] を選択します。
  5. 適切なアクセス許可グループを展開し、管理アプリケーションに付与するアクセス許可のチェック ボックスをオンにします。 次に例を示します。
    • [User](ユーザー)>[User.ReadWrite.All] : ユーザー移行またはユーザー管理のシナリオの場合。
    • [Group](グループ)>[Group.ReadWrite.All] : グループの作成、グループ メンバーシップの読み取りと更新、グループの削除を行う場合。
    • [AuditLog]>[AuditLog.Read.All] :ディレクトリの監査ログを読み取る場合。
    • [Policy](ポリシー)>[Policy.ReadWrite.TrustFramework] :継続的インテグレーション/継続的デリバリー (CI/CD) のシナリオの場合。 たとえば、Azure Pipelines を使用したカスタム ポリシーの展開などです。
  6. [アクセス許可の追加] を選択します. 指示に従って、数分待ってから次の手順に進みます。
  7. [<テナント名> に管理者の同意を与えます] を選択します。
  8. 現在グローバル管理者アカウントを使用してサインインしていない場合は、少なくとも "クラウド アプリケーション管理者" ロールが割り当てられている Azure AD B2C テナントのアカウントでサインインしてから、 [<テナント名> に管理者の同意を与えます] を選択します。
  9. [更新] を選択し、 [状態] に、"... に付与されました" と表示されていることを確認します。 アクセス許可が反映されるまでに数分かかる場合があります。

[省略可能] ユーザー管理者ロールを付与する

アプリケーションまたはスクリプトでユーザーのパスワードを更新する必要がある場合は、ユーザー管理者ロールをアプリケーションに割り当ててください。 ユーザー管理者ロールには、アプリケーションに付与する固定されたアクセス許可のセットがあります。

ユーザー管理者ロールを追加するには、次の手順を実行します。

  1. Azure portal にサインインします。
  2. ご自分の Azure AD B2C テナントが含まれるディレクトリを必ず使用してください。 ポータル ツールバーの [Directories + subscriptions](ディレクトリ + サブスクリプション) アイコンを選択します。
  3. [ポータルの設定] | [Directories + subscriptions](ディレクトリ + サブスクリプション) ページで Azure AD B2C ディレクトリを [ディレクトリ名] リストで見つけ、 [Switch] を選択します。
  4. Azure AD B2C を検索して選択します。
  5. [管理][ロールと管理者] を選択します。
  6. [ユーザー管理者] ロールを選択します。
  7. [割り当ての追加] を選択します。
  8. [選択] テキスト ボックスに、前に登録したアプリケーションの名前または ID (たとえば、managementapp1) を入力します。 検索結果に表示されたら、アプリケーションを選択します。
  9. [追加] を選択します。 アクセス許可が完全に反映されるまでに数分かかる場合があります。

クライアント シークレットを作成する

アプリケーションでは、トークンを要求するときに ID を証明するためにクライアント シークレットが必要です。 クライアント シークレットを追加するには、次の手順のようにします。

  1. [管理] で、[証明書とシークレット] を選択します。
  2. [新しいクライアント シークレット] を選択します。
  3. [説明] ボックスにクライアント シークレットの説明を入力します。 たとえば、clientsecret1 のようにします。
  4. [有効期限] で、シークレットが有効な期間を選択してから、 [追加] を選択します。
  5. シークレットのを記録します。 この値は、後の手順で構成に使用します。

次のステップ

管理アプリケーションを登録し、必要なアクセス許可を付与したので、お使いのアプリケーションとサービス (たとえば、Azure Pipelines) はその資格情報とアクセス許可を使用して、Microsoft Graph API と対話することができます。