SCIM2Client - スコープ指定
SCIM2Client API は、クロスドメイン ID 管理システム (SCIM) プロバイダー (サーバーロール) を呼び出して、サービスプロバイダー (SP) のデータを作成、更新、または削除するメソッドを提供します。
SCIM は、クライアントとサーバーのロールを定義する REST および JSON ベースのプロトコルです。クライアントは通常、ユーザー ID の堅牢なディレクトリを含む Okta ID プロバイダー (IDP) です。SP は通常、Box や Slack などの SaaS アプリケーションであり、これらの ID からの情報のサブセットを必要とします。IDP で ID が変更 (作成、更新、削除など) されると、変更は SCIM プロトコルに従って自動的に SP に同期されます。
次の画像は、サービスプロバイダーのデータを操作するための一般的な API コールフローを示しています。
この API は sn_auth 名前空間で実行されます。API にアクセスするには、SCIM v2 - ServiceNow Cross-domain Identity Management Client (com.snc.integration.scim2.client) プラグインがインストールされている必要があります。
それぞれの SCIM メソッドの呼び出しの結果は、SCIM クライアントログ [sys_scim_client_logs] テーブルで確認できます。
SCIM の詳細については、「 クロスドメイン ID 管理システム (SCIM)」を参照してください。
SCIM2Client - executeDelete(文字列 provider, 文字列 resourceName, 文字列 providerResourceId)
指定されたリソースを外部サービスプロバイダーシステムから削除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| provider | 文字列 | 必須です。設定された SCIM サービスプロバイダーの名前。サービスプロバイダー名は、SCIM プロバイダー [sys_scim_provider] テーブルの名前フィールドで定義されます。 |
| resourceName | 文字列 | 必須です。ユーザーやグループなどのリソースタイプの名前。 テーブル:SCIM プロバイダーリソースマッピング [sys_scim_provider_resource_mapping] テーブルの [resource_name] フィールド。 |
| providerResourceId | 文字列 | 必須です。外部サービスプロバイダーシステム上の関連付けられたリソースの一意の識別子。 |
| タイプ | 説明 |
|---|---|
| message | status が SUCCESS の場合、エンドポイントは、REST SCIM API で定義された応答本文を返します。 データタイプ:文字列 |
| status | 要求のステータス 可能な値:
データタイプ:文字列 |
次の例は、SNOW プロバイダーシステムでユーザーリソースを削除する方法を示しています。
var scimClient = new sn_auth.SCIM2Client();
var response = scimClient.executeDelete('SNOW Provider','User','f282abf03710200044e0bfc8bcbe5d12');
gs.info('response: ' + response);
出力:
// Example of a successful response
{
"status":"SUCCESS",
"message":null
}
// Example of a failed response
{
"status":"FAILURE",
"message":"{
\"schemas\":[
\"urn:ietf:params:scim:api:messages:2.0:Error\"
],
\"status\":\"404\",
\"detail\":\"Invalid user id 3985e598876989103fa711f83cbb35ae1\"
}"
}
SCIM2Client - executeGet(文字列 provider, 文字列 resourceName, 文字列 queryParams)
指定された外部プロバイダーシステムから取得された、渡された基準に一致するすべてのリソースを返します。
この情報は、対応する SCIM サービスプロバイダーの API を呼び出すために使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| provider | 文字列 | 必須です。設定された SCIM サービスプロバイダーの名前。サービスプロバイダー名は、SCIM プロバイダー [sys_scim_provider] テーブルの名前フィールドで定義されます。 |
| resourceName | 文字列 | 必須です。ユーザーやグループなどのリソースタイプの名前。 テーブル:SCIM プロバイダーリソースマッピング [sys_scim_provider_resource_mapping] テーブルの [resource_name] フィールド。 |
| queryParams | 文字列 | 必須です。外部 SCIM サービスプロバイダーのエンドポイントに渡される SCIM 準拠のクエリパラメーター。 使用可能なクエリパラメーターとその関連形式の詳細については、インターネットエンジニアリングタスクフォースのドキュメント「System for Cross-domain Identity Management: Protocol」を参照してください。 |
| タイプ | 説明 |
|---|---|
| message | status が SUCCESS の場合、エンドポイントは、REST SCIM API で定義された応答本文を返します。 データタイプ:文字列 |
| status | 要求のステータス 可能な値:
データタイプ:文字列 |
次の例は、仕事用のメールに「lucius.bagnoli」が含まれている利用可能なすべてのユーザーを、snow test というサービスプロバイダーから取得する方法を示しています。
var scimClient = new sn_auth.SCIM2Client();
var queryParams = {};
queryParams['filter'] = 'emails[type eq \"work\" and value co \"lucius.bagnoli\"]';
var response = scimClient.executeGet('SCIM Provider Demo','User', queryParams);
gs.info('response for get with filter: ' + response);
応答:
//Example of a successful response
{
"status":"SUCCESS",
"message":"{
\"schemas\":[
\"urn:ietf:params:scim:api:messages:2.0:ListResponse\"
],
\"totalResults\":647,
\"Resources\":[
{
\"schemas\":[
\"urn:ietf:params:scim:schemas:extension:servicenow:2.0:User\",
\"urn:ietf:params:scim:schemas:core:2.0:User\"
],
\"id\":\"005d500b536073005e0addeeff7b12f4\",
\"meta\":{
\"resourceType\":\"User\",
\"created\":\"2019-04-05T21:09:12Z\",
\"lastModified\":\"2021-10-10T19:38:36Z\",
\"location\":\"https://empiamsd1.service-now.com/api/now/scim/Users/005d500b536073005e0addeeff7b12f4\"
},
\"userName\":\"survey.user\",
\"name\":{
\"familyName\":\"user\",
\"givenName\":\"survey\"
},
\"displayName\":\"survey user\",
\"active\":true,
\"emails\":[
{
\"value\":\"survey.user@email.com\",
\"type\":\"work\"
}
]
},
{
\"schemas\":[
\"urn:ietf:params:scim:schemas:extension:servicenow:2.0:User\",
\"urn:ietf:params:scim:schemas:core:2.0:User\"
],
\"id\":\"02826bf03710200044e0bfc8bcbe5d3f\",
\"meta\":{
\"resourceType\":\"User\",
\"created\":\"2012-02-18T03:04:49Z\",
\"lastModified\":\"2021-10-10T19:38:36Z\",
\"location\":\"https://empiamsd1.service-now.com/api/now/scim/Users/02826bf03710200044e0bfc8bcbe5d3f\"
},
\"userName\":\"lucius.bagnoli\",
\"name\":{
\"familyName\":\"Bagnoli\",
\"givenName\":\"Lucius\"
},
\"displayName\":\"Lucius Bagnoli\",
\"active\":true,
\"emails\":[
{
\"value\":\"lucius.bagnoli@example.com\",
\"type\":\"work\"
}
],
\"urn:ietf:params:scim:schemas:extension:servicenow:2.0:User\":{
\"gender\":\"Male\",
\"costCenter\":{
\"value\":\"91e8bbf43710200044e0bfc8bcbe5daa\",
\"name\":\"Customer Support\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/CostCenters/91e8bbf43710200044e0bfc8bcbe5daa\"
},
\"company\":{
\"value\":\"81fd65ecac1d55eb42a426568fc87a63\",
\"name\":\"ACME Japan\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Companies/81fd65ecac1d55eb42a426568fc87a63\"
},
\"department\":{
\"value\":\"5d7f17f03710200044e0bfc8bcbe5d43\",
\"name\":\"Customer Support\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Departments/5d7f17f03710200044e0bfc8bcbe5d43\"
},
\"manager\":{
\"value\":\"02826bf03710200044e0bfc8bcbe5d88\",
\"displayName\":\"Billie Cowley\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Users/02826bf03710200044e0bfc8bcbe5d88\"
},
\"location\":{
\"value\":\"0002c0a93790200044e0bfc8bcbe5df5\",
\"name\":\"2-10-1 Yurakucho, Chiyoda-ku, Tokyo\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Locations/0002c0a93790200044e0bfc8bcbe5df5\"
}
}
}
],
\"startIndex\":1,
\"itemsPerPage\":2}"}
// Example of a failure response
{
"status":"FAILURE",
"message":"SCIM Provider rest message is not configured properly"
}
SCIM2Client - executeGetById(文字列 provider, 文字列 resourceName, 文字列 providerResourceId, マップ<文字列, 文字列> queryParams)
指定された一意のリソース ID を持つリソースを外部プロバイダーシステムから返します。
この情報は、対応する SCIM サービスプロバイダーの API を呼び出すために使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| provider | 文字列 | 必須です。設定された SCIM サービスプロバイダーの名前。サービスプロバイダー名は、SCIM プロバイダー [sys_scim_provider] テーブルの名前フィールドで定義されます。 |
| providerResourceId | 文字列 | 必須です。外部サービスプロバイダーシステム上の関連付けられたリソースの一意の識別子。 |
| queryParams | 文字列 | 必須です。外部 SCIM サービスプロバイダーのエンドポイントに渡される SCIM 準拠のクエリパラメーター。 使用可能なクエリパラメーターとその関連形式の詳細については、インターネットエンジニアリングタスクフォースのドキュメント「System for Cross-domain Identity Management: Protocol」を参照してください。 |
| タイプ | 説明 |
|---|---|
| message | status が SUCCESS の場合、エンドポイントは、REST SCIM API で定義された応答本文を返します。 データタイプ:文字列 |
| status | 要求のステータス 可能な値:
データタイプ:文字列 |
この例では、「snow test」という外部プロバイダーシステムから指定されたリソースを取得する方法を示します。
var scimClient = new sn_auth.SCIM2Client();
var queryParams = {};
var response = scimClient.executeGetById('snow test','User', 'f282abf03710200044e0bfc8bcbe5d12', queryParams);
gs.info('response for simple getById: ' + response);
出力:
// Example of a successful response
{
"status":"SUCCESS",
"message":"{
\"schemas\":[
\"urn:ietf:params:scim:schemas:extension:servicenow:2.0:User\",
\"urn:ietf:params:scim:schemas:core:2.0:User\"
],
\"id\":\"f282abf03710200044e0bfc8bcbe5d12\",
\"meta\":{
\"resourceType\":\"User\",
\"created\":\"2012-02-18T03:04:53Z\",
\"lastModified\":\"2021-10-10T19:38:37Z\",
\"location\":\"https://empiamsd1.service-now.com/api/now/scim/Users/f282abf03710200044e0bfc8bcbe5d12\"
},
\"userName\":\"tia.neumaier\",
\"name\":{
\"givenName\":\"Tia\"
},
\"displayName\":\"Tia Neumaier\",
\"active\":true,
\"emails\":[
{
\"value\":\"tia.neumaier@example.com\",
\"type\":\"work\"
}
],
\"urn:ietf:params:scim:schemas:extension:servicenow:2.0:User\":{
\"costCenter\":{
\"value\":\"7fb1cc99c0a80a6d30c04574d14c0acf\",
\"name\":\"Sales\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/CostCenters/7fb1cc99c0a80a6d30c04574d14c0acf\"
},
\"company\":{
\"value\":\"227cdfb03710200044e0bfc8bcbe5d6b\",
\"name\":\"ACME South America\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Companies/227cdfb03710200044e0bfc8bcbe5d6b\"
},
\"department\":{
\"value\":\"221db0edc611228401760aec06c9d929\",
\"name\":\"Sales\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Departments/221db0edc611228401760aec06c9d929\"
},
\"location\":{
\"value\":\"25b4c23b0a0a0bb30054836629537509\",
\"name\":\"Carretera Cancun-Chetumal KM 22, Cancun\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Locations/25b4c23b0a0a0bb30054836629537509\"
}
}
}"
}
// Example of a failed response
{
"status":"FAILURE",
"message":"{
\"schemas\":[
\"urn:ietf:params:scim:api:messages:2.0:Error\"
],
\"status\":\"404\",
\"detail\":\"User not found f282abf03710200044e0bfc8bcbe5d121\"
}"
}
SCIM2Client - provision(文字列 provider, 文字列 resourceName, 文字列 resourceId)
外部サービスプロバイダーシステムで、指定された sys_id のリソースを作成または更新します。
たとえば、ServiceNow インスタンスでユーザーを作成または更新する場合、このメソッドを使用すれば外部サービスプロバイダーシステムで同じリソースを作成または更新できます。対応するリソースで作成または更新できるのは、SCIM プロバイダーリソースマッピング [sys_scim_provider_resource_mapping] テーブルにマッピングされているフィールドのみです。
プロバイダーリソースマッピングの詳細については、「 SCIM プロバイダーリソースマッピングの作成」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| provider | 文字列 | 必須です。設定された SCIM サービスプロバイダーの名前。サービスプロバイダー名は、SCIM プロバイダー [sys_scim_provider] テーブルの名前フィールドで定義されます。 |
| resourceName | 文字列 | 必須です。ユーザーやグループなどのリソースタイプの名前。 テーブル:SCIM プロバイダーリソースマッピング [sys_scim_provider_resource_mapping] テーブルの [resource_name] フィールド。 |
| resourceId | 文字列 | 必須です。ServiceNow インスタンス (クライアント) に保存されているリソースの sys_id。 テーブル:SCIM プロバイダーリソースマッピング [sys_scim_provider_resource_mapping] テーブルの [primary_table] フィールド。 |
| タイプ | 説明 |
|---|---|
| message | status が SUCCESS の場合、エンドポイントは、REST SCIM API で定義された応答本文を返します。 データタイプ:文字列 |
| status | 要求のステータス 可能な値:
データタイプ:文字列 |
次の例は、Snow Provider でユーザーをプロビジョニングする方法を示しています。
var scimClient = new sn_auth.SCIM2Client();
var response = scimClient.provision('SNOW Provider','User','f282abf03710200044e0bfc8bcbe5d12');
gs.info('response: ' + response);
出力:
// Example of successful response
{
"status":"SUCCESS",
"message":"{
\"schemas\":[
\"urn:ietf:params:scim:schemas:extension:servicenow:2.0:User\",
\"urn:ietf:params:scim:schemas:core:2.0:User\"
],
\"id\":\"f282abf03710200044e0bfc8bcbe5d12\",
\"meta\":{
\"resourceType\":\"User\",
\"created\":\"2012-02-18T03:04:53Z\",
\"lastModified\":\"2021-10-10T19:38:37Z\",
\"location\":\"https://empiamsd1.service-now.com/api/now/scim/Users/f282abf03710200044e0bfc8bcbe5d12\"
},
\"userName\":\"tia.neumaier\",
\"name\":{
\"familyName\":\"Neumaier\",
\"givenName\":\"Tia\"
},
\"displayName\":\"Tia Neumaier\",
\"active\":true,
\"emails\":[
{
\"value\":\"tia.neumaier@example.com\",
\"type\":\"work\"
}
],
\"urn:ietf:params:scim:schemas:extension:servicenow:2.0:User\":{
\"gender\":\"Female\",
\"costCenter\":{
\"value\":\"7fb1cc99c0a80a6d30c04574d14c0acf\",
\"name\":\"Sales\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/CostCenters/7fb1cc99c0a80a6d30c04574d14c0acf\"
},
\"company\":{
\"value\":\"227cdfb03710200044e0bfc8bcbe5d6b\",
\"name\":\"ACME South America\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Companies/227cdfb03710200044e0bfc8bcbe5d6b\"
},
\"department\":{
\"value\":\"221db0edc611228401760aec06c9d929\",
\"name\":\"Sales\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Departments/221db0edc611228401760aec06c9d929\"
},
\"location\":{
\"value\":\"25b4c23b0a0a0bb30054836629537509\",
\"name\":\"Carretera Cancun-Chetumal KM 22, Cancun\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Locations/25b4c23b0a0a0bb30054836629537509\"
}
}
}"
}
// Example of failure response
{
"status":"FAILURE",
"message":"SCIM client attribute or provider resource mapping is not configured properly ,
No provider resource mapping id found for provider name: SNOW Provider and resource name: User"
}
SCIM2Client - provisionNew(文字列 provider, 文字列 resourceName, 文字列 resourceId)
外部サービスプロバイダーシステムで、指定された sys_id のリソースを新規作成します。
たとえば、ServiceNow インスタンスでユーザーを新規作成する場合、このメソッドを使用すれば外部サービスプロバイダーシステムで同じリソースを作成できます。対応する外部サービスプロバイダーシステムで作成できるのは、SCIM プロバイダーリソースマッピング [sys_scim_provider_resource_mapping] テーブルにマッピングされているフィールドのみです。リソースが外部サービスプロバイダーシステムにすでに存在する場合は、エラー応答が返されます。
プロバイダーリソースマッピングの詳細については、「 SCIM プロバイダーリソースマッピングの作成」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| provider | 文字列 | 必須です。設定された SCIM サービスプロバイダーの名前。サービスプロバイダー名は、SCIM プロバイダー [sys_scim_provider] テーブルの名前フィールドで定義されます。 |
| resourceName | 文字列 | 必須です。ユーザーやグループなどのリソースタイプの名前。 テーブル:SCIM プロバイダーリソースマッピング [sys_scim_provider_resource_mapping] テーブルの [resource_name] フィールド。 |
| resourceId | 文字列 | 必須です。ServiceNow インスタンス (クライアント) に保存されているリソースの sys_id。 テーブル:SCIM プロバイダーリソースマッピング [sys_scim_provider_resource_mapping] テーブルの [primary_table] フィールド。 |
| タイプ | 説明 |
|---|---|
| message | status が SUCCESS の場合、エンドポイントは、REST SCIM API で定義された応答本文を返します。 データタイプ:文字列 |
| status | 要求のステータス 可能な値:
データタイプ:文字列 |
次の例は、SNOW Provider という外部サービスプロバイダーでユーザーを新規作成する方法を示しています。
var scimClient = new sn_auth.SCIM2Client();
var response = scimClient.provisionNew('SNOW Provider','User','f282abf03710200044e0bfc8bcbe5d12');
gs.info('response: ' + response);
出力:
// Example of successful response
{
"status":"SUCCESS",
"message":"{
\"schemas\":[
\"urn:ietf:params:scim:schemas:extension:servicenow:2.0:User\",
\"urn:ietf:params:scim:schemas:core:2.0:User\"
],
\"id\":\"f282abf03710200044e0bfc8bcbe5d12\",
\"meta\":{
\"resourceType\":\"User\",
\"created\":\"2012-02-18T03:04:53Z\",
\"lastModified\":\"2021-10-10T19:38:37Z\",
\"location\":\"https://empiamsd1.service-now.com/api/now/scim/Users/f282abf03710200044e0bfc8bcbe5d12\"
},
\"userName\":\"tia.neumaier\",
\"name\":{
\"familyName\":\"Neumaier\",
\"givenName\":\"Tia\"
},
\"displayName\":\"Tia Neumaier\",
\"active\":true,
\"emails\":[
{
\"value\":\"tia.neumaier@example.com\",
\"type\":\"work\"
}
],
\"urn:ietf:params:scim:schemas:extension:servicenow:2.0:User\":{
\"gender\":\"Female\",
\"costCenter\":{
\"value\":\"7fb1cc99c0a80a6d30c04574d14c0acf\",
\"name\":\"Sales\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/CostCenters/7fb1cc99c0a80a6d30c04574d14c0acf\"
},
\"company\":{
\"value\":\"227cdfb03710200044e0bfc8bcbe5d6b\",
\"name\":\"ACME South America\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Companies/227cdfb03710200044e0bfc8bcbe5d6b\"
},
\"department\":{
\"value\":\"221db0edc611228401760aec06c9d929\",
\"name\":\"Sales\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Departments/221db0edc611228401760aec06c9d929\"
},
\"location\":{
\"value\":\"25b4c23b0a0a0bb30054836629537509\",
\"name\":\"Carretera Cancun-Chetumal KM 22, Cancun\",
\"$ref\":\"https://empiamsd1.service-now.com/api/now/scim/Locations/25b4c23b0a0a0bb30054836629537509\"
}
}
}"
}
// Example of failure response
{
"status":"FAILURE",
"message":"SCIM client attribute or provider resource mapping is not configured properly ,
No provider resource mapping id found for provider name: SNOW Provider and resource name: User"
}