ようやくといっていい機能がEntra IDでパブリックプレビューしましたね!(2023年10月現在)
今まではGraph APIなどでごりごりやらないとアカウントが作成できませんでした、純粋なSCIM APIに対応したことによって、人事(HR)システムからデータを流して、アカウント作成や停止ができるようになりますね!
今回は、Postmanを利用してEntra IDを作成してみたいと思います。
アイキャッチの画像はDALL E3に作成してもらいました。
前提
作業を進めるには、以下のいずれかのロールを持ったユーザーが必要です。
- アプリケーション開発者
- アプリケーション管理者
- グローバル管理者
ここでは、オンプレADは考慮せず Entra IDのみを対象とします。
端末にPostmanをインストールしています。
設定手順
- Entra管理センターにアクセスします。
- 「アプリケーション」→「エンタープライスアプリケーション」→【新しいアプリケーション】をクリックします。
- 検索ボックスに、「API-driven」と入力し、表示された中から「API-driven Inbound User Provisioning to Azure AD」をクリックします。
- わかり易い名前に変更し、【作成】をクリックします。
- 左ペインから「プロビジョニング」をクリックし、【作業の開始】をクリックします。
- 「プロビジョニングモード」から「自動」を選択し、【保存】をクリックします。
- 保存後、「マッピング」設定が表示されたことを確認します。
- 必要に応じて、「設定」配下にある設定をし、【保存】をクリックします。
SCIMリクエスト要求受信を開始する
- プロビジョニングの概要ページを開き、【プロビジョニングの開始】をクリックします。
- API エンドポイントURLを確認し、控えておきます。
SCIM APIへのアクセス権を付与する
ここではサービスプリンシバルを構成してアクセス権を付与します。
- 「アプリケーション」→「アプリの登録」→【新規登録】をクリックします。
- 名前を入力し、【登録】をクリックします。
- 「証明書とシークレット」→【新しいクライアントシークレット】をクリックします。
- 説明欄を入力し、有効期限を選択し、【追加】をクリックします。
- 表示されたシークレットキーを控えておきます。(ここでしか確認ができないので注意!!)
- 「APIのアクセス許可」→【アクセス許可の追加】をクリックします。
- 「Microsoft Graph」→「アプリケーションの許可」をクリックします。
- 以下のアクセス許可を付与し、【アクセス許可の追加】をクリックします。
- AuditLog.Read.All
- SynchronizationData-User.Upload
- 【 [組織名]に管理者の同意を与えます 】をクリックし、【はい】をクリックします。
Postmanを利用して、SCIM APIを実行してみる
- 以下のファイルをダウンロードします。
- Postmanを起動します。
- わかりやすくするため、新規Workspaceを作成します。
- 「File」→「Import」を選択し、ダウンロードしたJSONファイルをすべて読み込みます。
- いくつかのリクエストサンプルがインポートされます。
認証初期設定
- 「Environments」→「Test-API2AAD」をクリックします。
- 事前に控えたそれぞれの値をInitial valueとCurrent vaueへ登録し右上の【Save】をクリックします。
client_id | 登録したアプリ概要欄の、「アプリケーション (クライアント) ID」の値 |
client_secret | 事前に作成したシークレットキー |
token_endpoint | 登録したアプリ概要欄の、「エンドポイント」→「OAuth 2.0 トークン エンドポイント (v1)」のURL |
jobid | エンタープライスアプリケーションで登録したアプリの概要→「技術情報の表示」にある「ジョブID」の値 |
bulk_upload_endpoint | エンタープライスアプリケーションで登録したアプリの概要→「技術情報の表示」にある「APIエンドポイントのプロビジョニング」の値 |
- 「Collections」→「Entra ID Inbound Provisioning」を選択します。
- 右上にあるプルダウンから「Test-API2AAD」を選択します。
- 「SCIM bulk request upload」を選択し、「Authorization」タブをクリックします。
- 下のほうにある【Get New Access Token】をクリックします。
- 値が正常な場合は以下のような画面が表示されます。
- Tokenが表示されるので、【Use Token】をクリックします。
SCIM APIへリクエストを送信してみる
すでにサンプルJSONが入っているので、このままPostmanからリクエストを送信してみます。
- Postmanの【Send】をクリックします。
- Consoleに何か表示されたので、Entara ID管理画面を確認してみます。
ユーザーが作成されていなくてなんでだろ?と思ったのですが、Sample JSONをそのまま渡してしまっていたので、当然ですがドメインが一致せず作成されていませんでした(笑)
例) “userName”: “[email protected]”, → bjensen@独自ドメイン or 初期で決めたonmicrosoftへ変更
”emails”: [ { “value”: “[email protected]”, も同様ですね。
Bodyの内容をテナントのドメインにあわせて再度実行してみました。
発表当時試していたときにはここで401になってしまい、先に進むことができませんでした。
フィードバックしたところ解消していただけました。
どんどんフィードバックしていきましょう!
202 Acceptedが返ってきたのでリクエスト自体は正常に行えたようです。
ユーザーが作成されているか、Entra ID管理センターから確認してみます。
サンプルのJSON通り、Kathy JensenとBabs Jensenアカウントが作成されていました!
ただ現状バグなのか仕様なのかわかりませんが、メール属性へは反映されないようです。
たぶんExchange Onlineがあった場合に書き換えられると困るからとかなのかなと予想しますが、EMSライセンスユーザーはmail属性に入ってくれないと困るんだよーーーーーー!と悲痛な叫びをしておきます(笑)
IdPとしての役割を果たしてほしい。
まとめ
ようやくEntra IDもSCIM APIに対応してくれました。
これで、人事システムを起点にSCIM APIを利用してEntra ID側でユーザーを作成するや、退職時にアカウントを無効化するなどが汎用的にできるようになりそうですね。
learnを見る限りカスタム属性の同期も可能なようなので、色々なことに利用できそうです。
きっとSmartHRさんとかも対応してくれて、Oktaへと同じように対応してくれるはず!