メンテナンスと管理コストを削減するために、企業は一連のルールに基づいて、社内システムの既存アカウントをクラウドに同期できます。Alibaba Cloud は、System for Cross-domain Identity Management(SCIM)および Open Authorization(OAuth)アプリケーションのセキュリティ認証に基づいて、企業の社内システムから Resource Access Management(RAM)にユーザー情報を同期できます。
前提条件
管理権限を持つ RAM ユーザー、または OAuth 管理権限を持つ RAM ユーザーを使用して、RAM コンソールで操作を実行することをお勧めします。
背景情報
SCIM は、クラウドベースのアプリケーションとサービスでユーザー ID を管理するために使用されるプロトコルです。SCIM 2.0 は、リソースを共通項とし、すべての SCIM オブジェクトがリソースから派生するオブジェクトモデル上に構築されています。リソースには、id、externalId、および meta 属性が含まれています。RFC 7643 は、共通属性を拡張した User、Group、および EnterpriseUser を定義しています。このトピックでは、User 属性を使用してユーザー情報を同期します。 RFC 7643 の詳細については、「RFC 7643」をご参照ください。
OAuth は、ユーザーリソースの認証のための安全でオープンなシンプルな標準を定義しています。サードパーティは、ユーザーのユーザー名とパスワードを取得することなく、ユーザーに関する認証情報を取得できます。OAuth は、[Web アプリケーション]、[ネイティブアプリケーション]、[サーバーアプリケーション] のアプリケーションタイプをサポートしています。[Web アプリケーション] と [ネイティブアプリケーション] は 3-legged OAuth を使用します。[サーバーアプリケーション] は 2-legged OAuth を使用します。SCIM は 2-legged OAuth を使用して、アプリケーション(コンシューマー)と API(サービスプロバイダー)間の認証を完了します。その後、アプリケーションは API を呼び出してデータを同期できます。 OAuth の詳細については、「OAuth 2.0」および「概要」をご参照ください。
Alibaba Cloud SCIM エンドポイント:
https://scim.aliyun.com。OAuth を使用してアクセストークン(access_token)を取得するために使用されるエンドポイント:
https://oauth.aliyun.com/v1/token。
ステップ 1: OAuth アプリケーションを作成して承認する
Alibaba Cloud アカウントを使用して、RAM コンソール にログオンします。
左側のナビゲーションウィンドウで、[OAuth プレビュー] をクリックします。
[エンタープライズアプリケーション] タブで、[アプリケーションの作成] をクリックして OAuth アプリケーションを作成します。
表示されるページで、[アプリケーションタイプ] を [サーバーアプリケーション] に設定します。詳細については、「アプリケーションを作成する」をご参照ください。
サーバーアプリケーションが作成されると、アプリケーションの詳細ページでアプリケーション ID(client_id)を取得できます。
アプリケーションの名前をクリックします。 [OAuth スコープ] タブで、[OAuth スコープの追加] をクリックしてスコープを追加します。
表示されるパネルで、[すべての OAuth スコープ] セクションの [/acs/scim] を選択します。詳細については、「OAuth スコープを追加する」をご参照ください。
OAuth アプリケーションを承認します。
[OAuth スコープ] タブで、[承認] をクリックします。
[サードパーティアプリケーションの承認] ページで、[クロスドメイン ID 管理へのアクセス] を選択し、[承認] をクリックします。
[アプリシークレット] タブで、[シークレットの作成] をクリックしてアプリケーションシークレットを作成します。
重要アプリケーションシークレット(AppSecretValue)は、作成時にのみ表示されます。後で使用するためにシークレットを保存することをお勧めします。
ステップ 2: アカウントデータを同期する
クライアントまたは SCIM API を使用してアカウントデータを同期できます。たとえば、One Identity をクライアントとして使用できます。
One Identity で SCIM 情報を設定し、One Identity を使用してアカウントデータを同期できます。 One Identity の設定方法の詳細については、「One Identity ユーザーガイド」をご参照ください。
また、SCIM API を使用して、企業の社内システムのアカウントを RAM ユーザーにマッピングすることもできます。その後、RAM ユーザーのフィールドを作成、削除、クエリ、または変更できます。 RAM ユーザーの次のフィールドを作成、削除、クエリ、または変更できます。
id: RAM ユーザーの ID。グローバルに一意であり、サーバーによって生成されます。externalId: RAM ユーザーの外部キー。ユーザーレベルで一意であり、クライアントによって指定されます。このキーは、RAM ユーザーを企業の社内システムのユーザーに関連付けるために使用されます。説明RAM コンソールで RAM ユーザーを作成した場合、RAM ユーザーには
externalIdフィールドがありません。userName: RAM ユーザーのユーザー名。ユーザーレベルで一意であり、クライアントによって指定されます。displayName: RAM ユーザーの表示名。クライアントによって指定されます。
SCIM API を使用してアカウントデータを同期するには、次の手順を実行します。
承認されたサーバーアプリケーションの ID(client_id)とシークレット(AppSecretValue)を取得します。
client_id: アプリケーションの ID。ステップ 1: OAuth アプリケーションを作成して承認する から ID を取得できます。
AppSecretValue: アプリケーションのシークレット。ステップ 1: OAuth アプリケーションを作成して承認する からシークレットを取得できます。
client_idとAppSecretValueを使用してhttps://oauth.aliyun.com/v1/tokenにアクセスし、access_tokenを取得します。API リクエストを送信するときは、
"Authorization: Basic Base64Encode(client_id:AppSecretValue)"形式で Authorization ヘッダーを指定します。たとえば、client_id が cid で AppSecretValue が 123456 の場合、Authorization ヘッダーを"Authorization: Basic Y2lkOjEyMzQ1Ng=="として指定します。リクエスト例
curl --location --request POST --header "Authorization: Basic Y2lkOjEyMzQ1Ng==" https://oauth.aliyun.com/v1/token?grant_type=client_credentials&client_id=463790568674183****レスポンス例
{ "scope": "/acs/scim", "request_id": "8dc768e0-d6fe-4f52-a788-05631dd6c584", "access_token": "eyJ***hKg", "token_type": "Bearer", "expires_in": "3599" }SCIM でサポートされている
ResourceTypeとSchemaをクエリします。次のサンプルコードは、
ResourceTypeをクエリするために使用されます。curl --location --request GET 'https://scim.aliyun.com/ResourceTypes'次のサンプルコードは、
Schemaをクエリするために使用されます。curl --location --request GET 'https://scim.aliyun.com/Schemas'RAM ユーザーのフィールドを作成、クエリ、削除、または変更します。
RAM ユーザーを作成します。
企業の社内システムのアカウントデータに基づいて、ユーザー名(userName)、表示名(displayName)、および外部キー(externalId)を指定します。次に、RAM ユーザーを作成します。
リクエスト例
curl --location --request POST 'https://scim.aliyun.com/Users' \ --header 'Authorization: Bearer eyJ***hKg' \ --header 'Content-Type: application/json' \ --data-raw '{ "displayName": "j2gg0s_****", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "userName": "j2gg0screatedbyscim_exa****" }'レスポンス例
{ "displayName": "j2gg0s_****", "meta": { "created": "2020-02-14T03:58:59Z", "location": "https://scim.aliyun.com/Users/27648498165273****", "lastModified": "2020-02-14T03:58:59Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "id": "27648498165273****", "userName": "j2gg0screatedbyscim_exa****" }RAM ユーザーをクエリします。
GET /Users/{id}を使用して、idで RAM ユーザーをクエリします。GET /Users?filter=externalId eq xxxを使用して、externalIdで RAM ユーザーをクエリします。GET /Users?filter=userName eq xxxを使用して、userNameで RAM ユーザーをクエリします。リクエスト例
curl --location --request GET 'https://scim.aliyun.com/Users?filter=userName%20eq%20%22j2gg0screatedbyscim****%22' \ --header 'Authorization: Bearer eyJ***hKg'レスポンス例
{ "startIndex": 1, "totalResults": 1, "itemsPerPage": 30, "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "Resources": [ { "displayName": "j2gg0screatedbyscim****", "meta": { "created": "2019-12-11T01:53:19Z", "location": "https://scim.aliyun.com/Users/27769827602919****", "lastModified": "2019-12-11T02:10:39Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "id": "27769827602919****", "userName": "j2gg0screatedbyscim****" } ] }説明SCIM は、
id、userName、およびexternalIdによるユーザーのクエリに、and フィルターと eq フィルターのみをサポートしています。
RAM ユーザーのフィールドを変更します。
リクエスト例
curl --location --request PUT 'https://scim.aliyun.com/Users/27648498165273****' \ --header 'Authorization: Bearer eyJ***hKg' \ --header 'Content-Type: application/json' \ --data-raw '{ "displayName": "j2gg0s_new_****", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "userName": "j2gg0screatedbyscim_new_exa****" }'レスポンス例
{ "displayName": "j2gg0s_new_****", "meta": { "created": "2020-02-14T03:58:59Z", "location": "https://scim.aliyun.com/Users/27648498165273****", "lastModified": "2020-02-14T04:03:55Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "id": "27648498165273****", "userName": "j2gg0screatedbyscim_new_exa****"}RAM ユーザーを削除します。
リクエスト例
curl --location --request DELETE 'https://scim.aliyun.com/Users/27648498165273****' \ --header 'Authorization: Bearer eyJ***hKg' \ --header 'Content-Type: application/json'HTTP ステータスコード 204 が返された場合、RAM ユーザーは削除されます。
説明Alibaba Cloud は論理削除をサポートしていません。企業の社内システムが論理削除をサポートしている場合は、アカウントを Alibaba Cloud に同期する前に、論理削除を物理削除にマッピングすることをお勧めします。