はじめに
こんにちは!Tamaduです。PingOne for Workforce(以下、単にPingOneと表記)には、外部のアプリケーションにユーザー情報を自動同期するプロビジョニング機能があります。今回は、この機能を使ってPingOneから外部のアプリケーション(SP)に対してユーザーとグループを同期するところまでを試してみたので紹介します。
今回の構成
本来であれば、SlackやBoxといったクラウドサービスをSPとして利用しますが、検証目的のため、scim.devをSPとして利用しました。scim.dev とは、SCIMの動作を理解するのに適したサービスで、PingOneから飛んでくるHTTPリクエストの中身がそのまま確認できます。
構成としては、PingOne(IdP)から scim.dev(SP)への一方向で、ユーザーとグループの同期を確認します。
動作確認では、以下の3つの操作を一通り試します。
- ユーザーの作成(
POST /Users) - ユーザー属性の更新(
PUT /Users/{id}) - ユーザーの削除(
DELETE /Users/{id})
scim.devでテスト環境を準備する
scim.dev は、SCIM 2.0に対応した無料でも利用できるサービスです。アカウントを作成すると、専用のSCIMエンドポイント(Base URL)と認証用のBearer Tokenが払い出されます。PingOneからのリクエストはすべてHTTP Logとして記録されるため、リクエストの中身を見ながらSCIMの動作を確認できます。
- https://scim.dev/ にアクセスし、アカウントを作成してログインします。
- ログイン後、My Environment セクションで以下の情報を取得します。
- SCIM Base URL(例: https://scim.dev/scim/v2/ )
- Bearer Token(APIキー)
PingOneでSCIM接続を作成する
ここでは、PingOne管理コンソールから、scim.devをプロビジョニング先として登録するためのSCIM接続を作成します。
- PingOne 管理コンソールにログインします。
- Integrations > Provisioning に移動します。
- [Connections]のタブをクリックし、「Identity Store」の[Select]を選択します。
- 「SCIM Outbound」の[Select]をクリックし、[NEXT]を選択します。
- 接続情報を入力します。
- Name: scim.dev-test
- Description: 検証用(任意)
- 認証設定を入力します。
項目 値 SCIM Base URL scim.dev で取得したURL SCIM Version 2.0 Authentication OAuth 2 Bearer Token Bearer Token scim.dev で取得したトークン Users Resource Users(デフォルト) Groups Resource Groups(デフォルト) - [Test Connection] をクリックして接続確認し、「Test Again」になればNextを選択します。
- [Save]をクリックします。
- 「Connections」に表示されればOKです。
プロビジョニングルールを作成する
- まず、テスト用のグループを作成します。
- 次に、作成した「scim-test-tama」グループにテストユーザーを追加します。
- 次にプロビジョニングルールを設定します。
- 左メニューから Integrations > Provisioning に移動します。
- Provisioning 横にある「+」をクリックし、[New Rule]を選択します。
- scim.dev-testのConnectionsを選択します。
- Targetに追加されていることを確認し、[Continue]をクリックします。
- NameとDescriptionに名前を入力し、[Next]をクリックします。
- User FilterのAdd Conditionをクリックし、[Next]を選択します。
- Attribute: Enabled、Operator: Equals、Value: trueにし、[Save]をクリックします。
- 次に、Groups のAdd Groups をクリックし、[Next]を選択します。
- 該当のグループにチェックを入れ、[Save]をクリックします。
- 「ターゲット側に同名のグループがある場合、メンバーシップがPingOneの内容で上書きされます」という確認ダイアログが表示されるので、「I understand and want to continue」にチェックを入れて Save をクリックします。
- Groupsに追加されていることを確認し、[Next]をクリックします。
- 次に属性マッピングが表示されます。PingOneの属性がscim.dev側のどの属性に対応するかの設定で、デフォルトのマッピングで進めます。このまま[Save]をクリックします。
- 作成したルールの右側にあるトグルをクリックして、ルールを有効化します。
動作確認
- PingOne側でテストユーザーを作成または既存ユーザーをプロビジョニング対象にし、scim.dev の HTTP Log 画面でリクエストを確認します。
- POST /Users - ユーザー作成
- GET /Groups - グループ確認
- GET /Groups?filter=displayName...scim-test-tama - グループ検索
- POST /Groups - グループ作成 → 201 Created
- 正常にレスポンスが返っていることが確認できます。
- また、scim.dev の User Manager でユーザーが作成されたことを確認しました。
- 次に、PingOne側でユーザー属性を変更し、scim.dev で PUT /Users/{id} のレスポンスが来ているかを確認します。
- 最後に、PingOne側でユーザー削除を実施し → scim.dev で DELETE /Users/{id} のレスポンスが来ているかを確認します。
まとめ
今回は、PingOneのSCIMアウトバウンドプロビジョニングを使って、scim.devにユーザーとグループを同期する流れを紹介しました。SCIM接続の作成からプロビジョニングルールの設定まで、PingOneの管理コンソール上で完結し、特に難しい設定はありませんでした。





