8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SCIM2.0の概要について調べてみた

Last updated at Posted at 2018-01-13

SCIMとは

System for Cross-domain Identity Managementの略。
ユーザIdentity情報を、クラウドベースアプリケーションやマイクロサービス間で連携するためのデータフォーマットの仕様。
RFC7642〜7644に定義されており、7643, 7644はStandards Track(標準化過程)にまでなっており、それに従って実装されたサービスがすでに複数存在する。

2015/9にバージョン2.0がリリースされたので、そのフォーマットについて調べてみた。

どんなサービスで使用されているのか?

  • Azure Active Directory
    • Active Directoryに設定したユーザ・グループ情報を自動的に他サービスにProvisioningする。
    • クライアント側の一例。
  • Trello
    • REST API経由でTrelloのユーザ参照・作成等の操作や、チームやボードの参照が可能らしい。
    • サーバ側の一例。

その他、SCIM 公式サイトImplementation にて紹介されているサイト群を参照。

連携対象となるデータドメイン

下図のように、User情報およびそれらUserをグループ化するようなアクセス制御情報(=Group)がデータ連携対象となる。
Groupの具体的な対象は場合に変わるが、部署であったりアクセス権限のRoleグループであったりする。
また、GroupはメンバーとしてUserまたはGroupを持つ。
EnterpriseUserとは、Userの中でもビジネスに携わったり企業に所属するUserの情報を指し、Userの情報に追加して社員番号や所属部署等の情報が入る。
その他、アプリ固有のデータ項目を追加できるよう、拡張できるようなフォーマットになっている。

image.png
SCIM 公式サイトより引用

連携方式

公式サイトに記載されている例のように、REST API経由で対象リソース(ユーザやグループ)にアクセスするだけでよい。
以下のようなエンドポイントを用意し、それを経由するイメージ。vにはプロトコルバージョン(例:v2)、resouceには対象となるデータモデル(例:Groups)が入る。

Create: POST https://example.com/{v}/{resource}
Read: GET https://example.com/{v}/{resource}/{id}
Replace: PUT https://example.com/{v}/{resource}/{id}
Delete: DELETE https://example.com/{v}/{resource}/{id}
Update: PATCH https://example.com/{v}/{resource}/{id}
Search: GET https://example.com/{v}/{resource}?filter={attribute}{op}{value}&sortBy={attributeName}&sortOrder={ascending|descending}
Bulk: POST https://example.com/{v}/Bulk

※ Searchだけちょっと実装が面倒そう。

例えばUser作成リクエストだと、以下のようなリクエストが公式サイトでは紹介されている。

POST /v2/Users  HTTP/1.1
Accept: application/json
Authorization: Bearer h480djs93hd8
Host: example.com
Content-Length: ...
Content-Type: application/json

{
  "schemas":["urn:ietf:params:scim:schemas:core:2.0:User"],
  "externalId":"bjensen",
  "userName":"bjensen",
  "name":{
    "familyName":"Jensen",
    "givenName":"Barbara"
  }
}

そして上記のJsonのデータ項目がRFCにおいて結構しっかり定められている。

追記

Qiitaの記事ないと思って、SCIMについて書いたのだが、以下の記事にすでに似たようなことが書かれていた。。。
https://qiita.com/naka_kyon/items/58e3c55282e997aaef47

8
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?