1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Entra ID のAPI駆動型インバウンドプロビジョニングをやってみた - その2

Last updated at Posted at 2025-02-22

1.はじめに
Entra ID のAPI駆動型インバウンドプロビジョニングを、PowershellとCSVを使ってプロビジョニングする記事がなかったので自分の備忘として残します。

2.Powershell スクリプトのダウンロード
MS Learnを参考に進める。
https://learn.microsoft.com/ja-jp/entra/identity/app-provisioning/inbound-provisioning-api-powershell#download-the-powershell-script

まず、以下の GitHub からダウンロードする。
https://github.com/AzureAD/entra-id-inbound-provisioning
github_download.jpg

ダウンロードしたデータのディレクトリ構成は MS Learn を参照ください。
とりあえず、プロビジョニング用のサンプルデータは以下にあります。

# ダウンロードフォルダ
\entra-id-inbound-provisioning-main\entra-id-inbound-provisioning-main\PowerShell\CSV2SCIM\Samples

3.Powershellを起動しコマンドを実行する
リモート署名済みのスクリプトを実行し有効にする

set-executionpolicy remotesigned

前提条件モジュールをインストールする

Install-Module -Name Microsoft.Graph.Applications,Microsoft.Graph.Reports

image.png

4.一括要求ペイロードを生成する
Powershell で GitHub からダウンロードしたファイルの SRC ディレクトリに移動する

# ダウンロードフォルダ
\entra-id-inbound-provisioning-main\PowerShell\CSV2SCIM\src\

下記コマンドを実行し、AttributeMapping 変数を初期化する

$AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'

image.png

下記コマンドを実行し、AttributeMapping ファイルに有効な SCIM スキーマ属性があるか検証する
検証に成功すると True が返ってくる

.\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping

image.png

コマンドを実行してエラーが出る場合は、ブロックを解除する
image.png

5.CSVの2つのレコードを Json ファイルに変換します

.\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping > BulkRequestPayload.json

image.png

下記のようにファイルが生成されます
※ファイル場所:entra-id-inbound-provisioning-main\PowerShell\CSV2SCIM\src
image.png

5.ユーザーをAPIにアップロードする
下記にアクセスする
https://aka.ms/ge

Global Administrator ロールを持つユーザーでログインする
image.png

API エンドポイントのプロビジョニングの値をコピーする
image.png

HTTPの要求を POST に設定し、先程コピーした値を貼り付ける
Key に Content-Type
Valu に application/scim+json を入れ追加する

image.png

Request Body に先程 CSV から JSON に変換した BulkRequestPayload.json の中身か、以下の SCIM Enterprise ユーザースキーマを使用した一括要求を張り付け、クエリを実行する
image.png

SCIM Enterprise ユーザースキーマを使用した一括要求
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
    "Operations": [
    {
        "method": "POST",
        "bulkId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
            "externalId": "701984",
            "userName": "bjensen@example.com",
            "name": {
                "formatted": "Ms. Barbara J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Barbara",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Babs Jensen",
            "nickName": "Babs",
            "emails": [
            {
              "value": "bjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "100 Universal City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91608",
              "country": "USA",
              "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5555",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Guide",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
                 "employeeNumber": "701984",
                 "costCenter": "4130",
                 "organization": "Universal Studios",
                 "division": "Theme Park",
                 "department": "Tour Operations",
                 "manager": {
                     "value": "89607",
                     "displayName": "John Smith"
                 }
            }
        }
    },
    {
        "method": "POST",
        "bulkId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
            "externalId": "701985",
            "userName": "Kjensen@example.com",
            "name": {
                "formatted": "Ms. Kathy J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Kathy",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Kathy Jensen",
            "nickName": "Kathy",
            "emails": [
            {
              "value": "kjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "100 Oracle City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91618",
              "country": "USA",
              "formatted": "100 Oracle City Plaza\nHollywood, CA 91618 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5545",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Lead",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
                 "employeeNumber": "701985",
                 "costCenter": "4130",
                 "organization": "Universal Studios",
                 "division": "Theme Park",
                 "department": "Tour Operations",
                 "manager": {
                     "value": "701984",
                     "displayName": "Barbara Jensen"
                 }
            }
        }
    }
],
    "failOnErrors": null
}

Entra ID 管理センター > エンタープライズアプリ > テスト用に登録したアプリ > プロビジョニング
登録したユーザー数が表示される
プロビジョニングログの表示から登録ユーザーが確認できる
※ プロビジョニングログにすぐ反映されない場合があります。Entra ID のユーザーからプロビジョニングされたユーザーを検索するのが確実です。
image.png

6.まとめ
設定さえ終われば以下の流れでユーザーは作成できました。
CSVでユーザーデータを生成
JSONファイルへ変換
Graph ExplorerにJSONの中身貼り付け
クエリ実行

*本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?