0
1

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 3 years have passed since last update.

SCIMを用いたIdP - Salesforce プロビジョニング方法 メモ

Posted at
  • IdP側で更新したユーザー属性情報をSalesforceとプロビジョニングする方法の備忘録記事。
    • プロビジョニングには、SCIMプロトコルを使用する。

準備

  • Salesforce側の接続アプリケーション設定を行い、client_id,client_secret,passwordなどの認証情報を払い出しておく。

想定シーケンス

SCIM_salesforce_sequence.png

各処理

①トークンエンドポイントからアクセストークンを取得する

  • 以降のAPI実行に必要なアクセストークンを取得する。
  • リクエスト例
GET /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8

grant_type=password&client_id=YOUR_CLINET_ID&client_secret=YOUR_CLIENT_SECRET&&username=YOUR_USERNAME&password=YOUR_PASSWORD
  • レスポンス例
    • 200 OK
{
    "id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
	"issued_at":"1278448832702",
    "instance_url":"https://na1.salesforce.com",
	"signature":"0CmxinZir53Yex7nE0TD+zMpvIWYGb/bdJh6XfOH6EQ=",
	"access_token":"00Dx0000000BV7z!AR8AQAxo9UfVkh8AlV0Gomt9Czx9LjHnSSpwBMmbRcgKFmxOtvxjTrKW19ye6PE3Ds1eQz3z8jr3W7_VbWmEu4Q8TVGSTHxs"
}

②更新対象ユーザーIDを取得する

  • (IdP側がSalesforce側のユーザーIDを持っていない場合、)Salesforce側のユーザーIDを取得する。

  • リクエスト例

    • ①で取得したアクセストークンをAuthorizationヘッダーに指定する。
    • userNameで検索する場合。
GET /services/scim/v2/Users?filters=userName ... HTTP/1.1
Host: sales_force_org_url
Content-Type: application/json; charset=utf-8
Authorization: Bearer {access_token}
  • レスポンス例
    • HTTP/1.1 200 OK
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults": 1,
    "Resources": [{
        "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
        "id": "user_id",
        "userName": "...",
        ...
        }]
    }],
    "startIndex": 1,
    "itemsPerPage": 20
}

③ユーザー属性を更新する

  • ②で取得したユーザーIDを指定し、Salesforce側ユーザー属性を更新する。
  • リクエスト例
    • ①で取得したアクセストークンをAuthorizationヘッダーに指定する。
PATCH /services/scim/v2/Users/{user_id} HTTP/1.1
Host: sales_force_org_url
Content-Type: application/json; charset=utf-8
Authorization: Bearer {access_token}

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "emails": [{
        "value": "UpdatedTest@example.com",
        ...
    }]
}
  • レスポンス例
    • HTTP/1.1 200 OK
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "id": "5171a35d82074e068ce2",
    ...
    "emails": [{
        "value": "UpdatedTest@example.com",
        ...
    }]
}

参考情報

0
1
0

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?