オンプレミスのアイデンティティシステムから SCIM プロトコルを通じてユーザーを Resource Access Management (RAM) に同期し、OAuth 2.0 の認可によってセキュリティを確保します。
前提条件
このトピックの操作は、RAM 管理者または OAuth 管理権限を持つ RAM ユーザーが実行することを推奨します。
概要
-
SCIM (System for Cross-domain Identity Management) は、クラウドアプリケーション間のアイデンティティ管理を標準化します。SCIM 2.0 は、すべてのオブジェクトが
id、externalId、meta属性を持つリソースから継承するオブジェクトモデルを使用します。RFC 7643 は、これらをUser、Group、およびEnterpriseUserで拡張します。このトピックでは、Userリソースを使用します。 -
OAuth (Open Authorization) を使用すると、サードパーティアプリケーションは認証情報を公開することなくユーザーリソースにアクセスできます。Alibaba Cloud は、[ Web アプリケーション ]、[ ネイティブアプリケーション ]、[ サーバーアプリケーション ]の 3 種類の OAuth アプリケーションをサポートしています。[ Web アプリケーション ]と[ ネイティブアプリケーション ]はどちらも 3-legged OAuth を使用しますが、[ サーバーアプリケーション ]は 2-legged OAuth を使用します。SCIM は、OAuth 2.0 仕様で定義されているように、クライアントと API 間の通信に 2-legged OAuth を使用します。詳細については、「OAuth アプリケーションの概要」をご参照ください。
-
Alibaba Cloud SCIM エンドポイント:
https://scim.aliyun.com。 -
access_tokenを取得するための Alibaba Cloud OAuth エンドポイント:https://oauth.aliyun.com/v1/token。
ステップ1:OAuthアプリケーションの作成と認可
-
Alibaba Cloud アカウントを使用してRAM コンソールにログインします。
-
左側のナビゲーションペインで、OAuth Preview をクリックします。
-
エンタープライズアプリケーション タブで、アプリケーションの作成 をクリックします。
アプリケーションタイプ で サーバーアプリケーション を選択します。詳細については、「アプリケーションの作成」をご参照ください。
作成後、アプリケーション詳細ページから
client_idを取得します。 -
アプリケーション名をクリックします。OAuth スコープ タブで、OAuth スコープの追加 をクリックします。
OAuth スコープ で [/acs/scim] を選択します。詳細については、「OAuthスコープの管理」をご参照ください。
-
OAuth アプリケーションを認可します。
-
OAuth スコープ タブで、許可 をクリックします。
-
[サードパーティアプリケーションの認可] ページで、[Alibaba CloudクロスドメインID管理サービス] を選択し、許可 をクリックします。
-
-
App Secret タブで、Secret の作成 をクリックしてアプリケーションシークレットを作成します。
重要AppSecretValue は作成時に一度しか表示されず、再取得はできません。安全な場所に保管してください。
ステップ2:ユーザーデータの同期
One Identity などのクライアント経由、または SCIM API を通じて直接ユーザーデータを同期できます。
-
クライアント:One Identity などのクライアントで SCIM 設定を行い、ユーザーデータを同期します。詳細については、「One Identity ドキュメント」をご参照ください。
-
SCIM API:オンプレミスユーザーを RAM ユーザーにマッピングします。次の RAM ユーザー属性を作成、削除、クエリ、更新できます。
-
id:RAM ユーザーの ID。グローバルに一意で、サーバーによって生成されます。 -
externalId:RAM ユーザーをオンプレミスシステムのユーザーに関連付ける、クライアント指定の一意の ID。説明コンソールで作成された RAM ユーザーには
externalId属性がありません。 -
userName:各ユーザーに対してクライアントが指定する一意の名前。 -
displayName:クライアントによって指定される RAM ユーザーの表示名。
-
SCIM API を使用してユーザーデータを同期するには:
-
認可済みのサーバーアプリケーションの ID (
client_id) とシークレット値 (AppSecretValue) を取得します。-
client_id:アプリケーション ID。この ID は、「ステップ1:OAuthアプリケーションの作成と認可」から取得できます。
-
AppSecretValue:アプリケーションシークレット。これは、「ステップ1:OAuthアプリケーションの作成と認可」から取得できます。
-
-
access_tokenを取得するには、client_idとAppSecretValueを含むリクエストをhttps://oauth.aliyun.com/v1/tokenに送信します。Authorizationヘッダーは"Authorization: Basic Base64Encode(client_id:AppSecretValue)"の形式を使用します。たとえば、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レスポンスの例:
{ "scope": "/acs/scim", "request_id": "8dc768e0-d6fe-4f52-a788-05631dd6c584", "access_token": "eyJ***hKg", "token_type": "Bearer", "expires_in": "3599" } -
Alibaba Cloud 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を指定します。リクエストの例:
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 フィルターでは、Alibaba Cloud は
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 は、削除が成功したことを示します。
説明Alibaba Cloud は論理削除をサポートしていません。データを同期する前に、すべての論理削除操作を物理削除にマッピングしてください。
-