> For AI agents: the complete documentation index is available at /resource/ucidm/docs/on-premise/1.8.0/llms.txt, the full documentation bundle is available at /resource/ucidm/docs/on-premise/1.8.0/llms-full.txt.

# Microsoft Entra ID 外部連携モジュール

UCIDM では [Microsoft Entra ID](https://www.microsoft.com/ja-jp/security/business/identity-access/microsoft-entra-id) に対して ID 連携できます。

Microsoft Entra ID 外部連携モジュールはコンテナとして稼働させます。次のように `compose.yml` に設定します。

```yml
  consumer-meid:
    depends_on:
      rabbitmq:
        condition: service_healthy
    container_name: consumer-meid
    image: docker.io/osstech/ucidm-consumer:latest
    logging: *default-logging
    ports:
      - 7099:7099
    volumes:
      - type: bind
        source: ./server-data
        target: /ucidm
        bind:
          create_host_path: false
    entrypoint:
      - ./bin/app-main
      - -jsonl
    environment:
      TZ: "${TZ}"
      DESTINATION_ID: "meid-001"
      MONGO_USER: "${MONGO_USER}"
      MONGO_PASSWORD: "${MONGO_PASSWORD}"
      MONGO_HOSTS: "${MONGO_HOSTS}"
      MONGO_REPLICA_SET: "${MONGO_REPLICA_SET}"
      RABBITMQ_USER: "${RABBITMQ_USER}"
      RABBITMQ_PASSWORD: "${RABBITMQ_PASSWORD}"
      RABBITMQ_HOST: "${RABBITMQ_HOST}"
      MEID_CLIENT_ID: "${MEID_CLIENT_ID}"
      MEID_CLIENT_SECRET: "${MEID_CLIENT_SECRET}"
      MEID_TENANT_ID: "${MEID_TENANT_ID}"
    restart: "always"
```

ここで参照する環境変数は `.env` に設定します。

## 起動時のオプション設定

entrypoint にて、次の設定をすることができます。

entrypoint では次の設定ができます。

- `-verbose`: デバッグログを出力
- `-jsonl`: JSON 形式でログを出力

## 環境変数の設定

| 環境変数                   |        値       |  既定値  | 説明                                                    |
| :--------------------- | :------------: | :---: | :---------------------------------------------------- |
| TZ                     |       任意       |   --  | タイムゾーン情報                                              |
| DESTINATION_ID         |       任意       |   --  | 外部連携先 ID 管理画面で作成した外部連携先 ID を指定                        |
| MONGO_USER             |       任意       |   --  | 接続する MongoDB のユーザ名                                    |
| MONGO_PASSWORD         |       任意       |   --  | 接続する MongoDB のパスワード                                   |
| MONGO_HOSTS            |       任意       |   --  | 接続する MongoDB のホスト                                     |
| MONGO_REPLICA_SET      |       任意       |   --  | 接続する MongoDB のレプリカセットの名前                              |
| RABBITMQ_USER          |       任意       |   --  | 接続する RabbitMQ のユーザ名                                   |
| RABBITMQ_PASSWORD      |       任意       |   --  | 接続する RabbitMQ のパスワード                                  |
| RABBITMQ_HOST          |       任意       |   --  | 接続する RabbitMQ のホスト                                    |
| MEID_CLIENT_ID         |       任意       |   --  | Microsoft Entra ID の Client ID                        |
| MEID_CLIENT_SECRET     |       任意       |   --  | Microsoft Entra ID の Client ID のパスワード                 |
| MEID_TENANT_ID         |       任意       |   --  | Microsoft Entra ID の Tenant ID                        |
| ENABLE_SCRIPT_PASSWORD | true または false | false | ユーザーパスワード更新時に外部連携の<br />前処理/後処理スクリプトにパスワードの値を連携するかどうか |

## Microsoft Entra ID 動作設定

管理画面にて Microsoft Entra ID の動作設定をすることができます。

設定項目と内容は次になります。

- ドメイン名
  - Microsoft Entra ID のドメイン名を指定します
- Immutable ID を自動生成
  - Immutable ID を自動生成するかどうかを指定します
  - true の場合、onPremisesImmutableId に UCIDM で発行された値がセットされます
- ドライランモード
  - 接続の取得やエントリの検索は行いますが、実際にエントリの追加/変更/削除は行わないモードとなります
  - 主にテスト時の動作確認等に使うことを想定しています
- ユーザー追加/更新を行わない
  - Microsoft Entra ID に対してユーザー追加/更新を行わない場合は、この項目をオン（true）にしてください
- ユーザー削除を行わない
  - Microsoft Entra ID に対してユーザー削除を行わない場合は、この項目をオン（true）にしてください
- ユーザーパスワード更新を行わない
  - Microsoft Entra ID に対してユーザーパスワード更新を行わない場合は、この項目をオン（true）にしてください
- グループ追加/更新を行わない
  - Microsoft Entra ID に対してグループ追加/更新を行わない場合は、この項目をオン（true）にしてください
- グループ削除を行わない
  - Microsoft Entra ID に対してグループ削除を行わない場合は、この項目をオン（true）にしてください
- グループメンバー追加を行わない
  - Microsoft Entra ID に対してグループメンバー追加を行わない場合は、この項目をオン（true）にしてください
- グループメンバー削除を行わない
  - Microsoft Entra ID に対してグループメンバー削除を行わない場合は、この項目をオン（true）にしてください

## Microsoft Entra ID マッピング設定

Microsoft Entra ID 外部連携モジュールでは次のマッピング設定をすることができます。

- 属性マッピング

次でマッピング設定について説明します。

### 属性マッピング

次の [属性マッピング設定](/resource/ucidm/docs/on-premise/1.8.0/administration/admin-ui/mappings.md) を参考にしてください。

Microsoft Entra ID では階層構造を持つ属性があります。
例えば、passwordProfile 内の forceChangePasswordNextSignIn に対して属性値をマッピングする場合は、「passwordProfile.forceChangePasswordNextSignIn」に対してマッピングをする必要があります。

また、以下の属性は Microsoft Entra ID 外部連携モジュール独自のマッピングになるため、合わせてご参照ください。

#### ユーザ・グループ共通の属性

##### assignedLicenses 属性

- Microsoft Entra ID では、ひとつのライセンスに複数のプランが紐付いています - 例えば STREAM と TEAMS_EXPLORATORY のライセンスを利用し、TEAMS_EXPLORATORY ライセンスにて MCO_TEAMS_IW と YAMMER_ENTERPRISE のプランを利用しない場合は、assignedLicenses 属性へのマッ
  ピングが次になるように設定します。（一部のプランを無効にする場合は、`<ライセンス名>/<プラン名>:<プラン名>:...` の形で指定します。） - `['STREAM', 'TEAMS_EXPLORATORY/MCO_TEAMS_IW:YAMMER_ENTERPRISE']`

#### ユーザ属性

##### userPrincipalName 属性

本属性については、連携されてきた primaryID の値を使用し、`${primaryID}@${ドメイン}` の値が自動でセットされるので、マッピング設定は必要ありません。

##### accountEnabled 属性

ユーザの有効化/無効化を制御するための属性となります。この属性に対して、true/false が設定されるようマッピングを行うことで、ユーザの有効化/無効化のステータスを
制御することができます。（有効化の場合は true、無効化の場合は false が割り当てられる必要があります）

#### グループ属性

##### displayName 属性

本属性については、連携されてきた primaryID の値が自動でセットされるので、マッピング設定は必要ありません。

### 前処理・後処理スクリプト設定

UCIDM では、外部連携処理の前後で任意のシェルスクリプトを実行することができます。

次の [外部連携の前処理/後処理で実行するスクリプトの配置](/resource/ucidm/docs/on-premise/1.8.0/configuration/destination/script.md) を参考に、スクリプトファイルを配置後、[外部連携の前処理/後処理で実行するスクリプトの設定](/resource/ucidm/docs/on-premise/1.8.0/configuration/destination/script.md) を参考に、実行したいスクリプトファイルを指定してください。
