SCIM

SCIM とは {#overview}

SCIM (System for Cross-domain Identity Management) は、標準化されたインターフェースでユーザー情報を交換できる、オープンな標準規格です。
SCIM を利用して、IdP (Identity Provider) からのユーザーとグループのプロビジョニング プロセスを簡素化し、作業を省力化することができます。

次の SCIM 2.0 RFC に従って実装されています。

  • RFC 7642: Definitions, Overview, Concepts, and Requirements
  • RFC 7643: Core Schema
  • RFC 7644: Protocol

サポートされる機能 {#supported-features}

IdP (Identity Provider) や人事管理システムでは、SCIM を利用して以下のような機能を利用できます。

ユーザーの自動作成 (Provisioning)

新しく入社した社員の情報を IdP や人事管理システムに追加すると、プロビジョニングにより LINE WORKS にも自動的にユーザーが作成されます。

ユーザーの自動無効化 (Deprovisioning)

社員が退職して IdP や人事管理システムから削除されると、LINE WORKS のユーザーも自動的に無効化されます。
無効化されたユーザーは、LINE WORKS にログオンすることはできません。
詳細は ユーザーの状態 を参照してください。

情報の同期

IdP や人事管理システムで社員の情報 (名前、電子メール、電話番号など) を変更すると、LINE WORKS のユーザー情報にも自動的に動悸されます。

グループ管理

プロジェクトなどでコミュニケーションのためのチームを利用する際に、メンバーシップ情報を一元管理することができます。
IdP や人事管理システムでグループのメンバーを追加または削除すると、LINE WORKS のグループにも自動的に反映されます。
これにより、トークルームやトークルーム機能 (ノート、予定、タスク、フォルダなど) のアクセス権を管理できます。
詳細は グループ を参照してください。

利用条件 {#prerequisites}

SCIM プロビジョニング連携は有償商品を利用しているお客様が利用できます。無償商品のみを使用するお客様はご利用になれません。

API 呼び出し {#api-call}

API Endpoint {#api-endpoint}

SCIM API を呼び出す Endpoint は以下のとおりです。

https://www.worksapis.com/scim/v2

例えば、ユーザーリストを照会するには、次のように呼び出します。

GET https://www.worksapis.com/scim/v2/Users

Authorization {#authorization}

API を呼び出すには、アクセストークンが必要です。
長期トークン を参考にアクセストークンを発行し、Authorization ヘッダーを使用して Bearer Token 方式で SCIM API を呼び出します。

Authorization: Bearer {Access Token}

Resources {#resources}

ユーザー {#user}

API {#user-api}

ユーザーを管理できます。

HTTP RequestDescription
POST /scim/v2/Usersユーザーの登録
GET /scim/v2/Usersユーザーのリスト取得
GET /scim/v2/Users/{userId}ユーザーの取得
PUT /scim/v2/Users/{userId}ユーザーの更新
PATCH /scim/v2/Users/{userId}ユーザーの部分更新
DELETE /scim/v2/Users/{userId}ユーザーの無効化
ユーザーの削除・即時削除は行われない。
ユーザーは一時停止状態となり、active 属性が false に設定される。
ユーザーを有効化するには、ユーザーの更新 または ユーザーの部分更新 SCIM API で active 属性を true に変更する。
ユーザーを削除するには、ユーザーの削除 または ユーザーの即時削除 LINE WORKS API を呼び出すか、管理者画面を利用する必要がある。

ユーザーの状態 {#user-status}

SCIM によりプロビジョニングされるユーザーの状態は、以下のライフサイクルで行われます。

scim_user_status_lifecycle

ユーザーの利用可否状態は、active 属性 (boolean) で管理します。
WORKS における active 属性は、ログイン可能か否かを意味します。従って、ユーザーの状態ごとの active 属性は以下のとおりです。

ユーザーの状態LINE WORKS APISCIM User の active 属性参考
登録待ちisPending = truetrue
待機中isAwaiting = truefalseSCIM APIでは設定できないユーザーの状態
管理者が設定した利用開始日になるまで使用できず、active:true には変更できません。
使用中true
一時停止isSuspended = truefalseユーザーの更新 または ユーザーの部分更新 で 'active: false' に変更したり ユーザーの無効化 を呼び出した場合のユーザー状態
削除isDeleted = truefalseSCIM API では設定できないユーザー状態

ユーザー状態の詳細は、Directory API 概要 - ユーザー(メンバー)(users)を参照してください。

グループ {#group}

SCIM Group API では、内部グループのみを管理できます。外部グループの取得、登録、更新、削除はできません。

API {#group-api}

グループを管理できます。

HTTP RequestDescription
POST /scim/v2/Groupsグループの登録
GET /scim/v2/Groupsグループリストの取得
GET /scim/v2/Groups/{groupId}グループの取得
PUT /scim/v2/Groups/{groupId}グループの更新
PATCH /scim/v2/Groups/{groupId}グループの部分更新
DELETE /scim/v2/Groups/{groupId}グループの削除

グループマスター / メンバー {#group-administrator-and-member}

  • SCIM Group API では、グループマスターの追加・削除はできません。
  • SCIM Group API では、グループマスターでなくても、グループの更新・削除ができます。
  • グループのメンバーとして、USER または GROUP のみを指定できます。
    参照 : LINE WORKS では、グループのメンバーとして ORGUNIT も指定できます。
  • SCIM Group API でグループのメンバーを変更しても、グループマスターや、ORGUNIT のグループメンバーは変更されません。

トークルーム機能 {#group-team-feature}

  • グループの登録時には、トークルーム機能、メーリングリスト機能は無効化された状態で作成されます。
  • トークルーム機能、メーリングリスト機能など、SCIM Group API で設定できないプロパティは、サービス画面、管理者画面、または LINE WORKS API を利用して変更します。
  • SCIM Group API により設定できないプロパティ (トークルーム機能、メーリングリスト、公開設定など) は、グループの更新 または グループの部分更新 SCIM API を呼び出しても変更されません。

Rate Limit {#rate-limit}

  • API あたり 240 requests/min

制限 {#limitations}

  • Filter
    • eq 演算子のみ利用できます。
    • User は userName プロパティのみ、 Group は displayName プロパティのみをフィルタできます。
    • その他の機能は利用できません。
  • Patch Operation
    • 詳細は PATCH Operation を参照してください。
  • 次の機能は提供されません。
    • Bulk Operations
    • Sync Password
    • Sort
    • eTag
    • Self Resource
  • グループ会社環境では、以下の制約があります。
    • Access Token は、発行されたドメインでのみ利用可能です。グループ会社環境では、各ドメインごとに発行された Access Token を使用する必要があります。
    • SCIM User API では、兼職の設定ができません。管理者画面、または LINE WORKS API を利用して兼職を設定する必要があります。
  • SSO (SAML 2.0) と共に利用する場合には、Developer Console > SSO > WORKS as SP で SAML を選択し、User Key として LINE WORKS Account (ex. id) を利用する必要があります。
  • SCIM によりプロビジョニングされたリソースは、LINE WORKS サービスでも変更・削除ができます。ただし、SCIM によりプロビジョニングされた属性を、LINE WORKS サービスや LINE WORKS API で修正すると、IdP (Identity Provider) とのデータの不一致が発生する可能性があります。
  • 組織、役職、職級、ユーザー公開フラグなど、SCIM User API で設定できないプロパティは、サービス画面、管理者画面、LINE WORKS API を使用して変更することができます。 更新・部分更新を行っても、これらのプロパティの値は維持されます。

PATCH Operation {#patch-operation}

RFC 7644 - 3.5.2. Modifying with PATCH に従います。

filter 操作には以下の制限があります。

  • eq および and 演算子のみが利用できます。
  • and 演算子では、2 個までの被演算子が利用できます。
    例: A and B は利用できますが、A and B and C は利用できません。

許可される Operation タイプ {#patch-operation-use-case}

Request Body の Operations 属性は、修正対象の属性の種類により、以下のフォーマットが利用できます。

単一の値を取る属性タイプ (string, integer, boolean)

ADD, REPLACE
  • Use Case 1
{  "op": "[ ADD | REPLACE ]",  "path": "{key}",  "value": "{value}"}
  • Use Case 2
{  "op": "[ ADD | REPLACE ]",  "value": {    "{key}": "{value}"  }}
REMOVE
{  "op": "REMOVE",  "path": "{key}"}

Object 属性タイプ

ADD, REPLACE
  • Use Case 1
{  "op": "[ ADD | REPLACE ]",  "path": "{mainKey}.{subKey}",  "value": "{value}"}
  • Use Case 2
{  "op": "[ ADD | REPLACE ]",  "path": "{mainKey}",  "value": {    "{subKey1}": "{value1}",    "{subKey2}": "{value2}",    ...  }}
  • Use Case 3
{  "op": "[ ADD | REPLACE ]",  "value": {    "{mainKey}": {      "{subKey1}": "{value1}",      "{subKey2}": "{value2}" ,      ...    }  }}
REMOVE
  • Use Case 1
{  "op": "REMOVE",  "path": "{mainKey}"}
  • Use Case 2
{  "op": "REMOVE",  "path": "{mainKey}.{subKey}"}

Array 属性タイプ

ADD, REPLACE
  • Use Case 1
{  "op": "[ ADD | REPLACE ]",  "path": "{key}",  "value": [    object1,    object2,    ...  ]}
  • Use Case 2
{  "op": "[ ADD | REPLACE ]",  "value": {    "{key}": [      object1,      object2,      ...    ]  }}
  • Use Case 3
{  "op": "[ ADD | REPLACE ]",  "path": "{key}[filter]",  "value": object}
  • Use Case 4
{  "op": "[ ADD | REPLACE ]",  "path": "{key}[filter].{subKey}",  "value": "{value}"}
  • Use Case 5 : ADDのみ可能
{  "op": "ADD",  "path": "{key}",  "value": object}
REMOVE
  • Use Case 1
{  "op": "REMOVE",  "path": "{key}"}
  • Use Case 2
{  "op": "REMOVE",  "path": "{key}[filter]"}
  • Use Case 3
{  "op": "REMOVE",  "path": "{key}",  "value": [    {      "value": "{value}"    },    ...  ]}
  • Use Case 4
{  "op": "REMOVE",  "path": "{key}[filter]",  "value": [    {      "value": "{value}"    },    ...  ]}

監査 {#audit}

管理者画面の [監査 > アドレス帳] より、サービスタイプ = SCIM でフィルタすることで、SCIM API の呼び出し履歴を確認することができます。