PingOne for WorkforceのSCIMアウトバウンドプロビジョニングを試してみた

Takuya Tamada
Takuya Tamada

クラウドセキュリティアーキテクト

はじめに

こんにちは!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の動作を確認できます。

  1. https://scim.dev/ にアクセスし、アカウントを作成してログインします。
  2. ログイン後、My Environment セクションで以下の情報を取得します。
    1. SCIM Base URL(例: https://scim.dev/scim/v2/ )
    2. Bearer Token(APIキー)

PingOneでSCIM接続を作成する

ここでは、PingOne管理コンソールから、scim.devをプロビジョニング先として登録するためのSCIM接続を作成します。

  1. PingOne 管理コンソールにログインします。
  2. Integrations > Provisioning に移動します。
  3. [Connections]のタブをクリックし、「Identity Store」の[Select]を選択します。
  4. 「SCIM Outbound」の[Select]をクリックし、[NEXT]を選択します。
  5. 接続情報を入力します。
    1. Name: scim.dev-test
    2. Description: 検証用(任意)
  6. 認証設定を入力します。
    項目
    SCIM Base URLscim.dev で取得したURL
    SCIM Version2.0
    AuthenticationOAuth 2 Bearer Token
    Bearer Tokenscim.dev で取得したトークン
    Users ResourceUsers(デフォルト)
    Groups ResourceGroups(デフォルト)
  7. [Test Connection] をクリックして接続確認し、「Test Again」になればNextを選択します。
  8. [Save]をクリックします。
  9. 「Connections」に表示されればOKです。

プロビジョニングルールを作成する

  1. まず、テスト用のグループを作成します。
    1. Directory > Groups に移動
    2. Groupsの横にある「+」をクリックします。
    3. 以下を入力し、[Save]をクリックします。
      1. Group Name: scim-test-tama
      2. Description: SCIM検証用
  2. 次に、作成した「scim-test-tama」グループにテストユーザーを追加します。
    1. 作成した scim-test-tama を開く
    2. Users タブをクリック
    3. Add Individually をクリック
    4. テストユーザーにチェックを入れ、[Save]で追加します。
    5. グループに追加できていることを確認します。
  3. 次にプロビジョニングルールを設定します。
    1. 左メニューから Integrations > Provisioning に移動します。
    2. Provisioning 横にある「+」をクリックし、[New Rule]を選択します。
    3. scim.dev-testのConnectionsを選択します。
    4. Targetに追加されていることを確認し、[Continue]をクリックします。
    5. NameとDescriptionに名前を入力し、[Next]をクリックします。
    6. User FilterのAdd Conditionをクリックし、[Next]を選択します。
    7. Attribute: Enabled、Operator: Equals、Value: trueにし、[Save]をクリックします。
    8. 次に、Groups のAdd Groups をクリックし、[Next]を選択します。
    9. 該当のグループにチェックを入れ、[Save]をクリックします。
    10. 「ターゲット側に同名のグループがある場合、メンバーシップがPingOneの内容で上書きされます」という確認ダイアログが表示されるので、「I understand and want to continue」にチェックを入れて Save をクリックします。
    11. Groupsに追加されていることを確認し、[Next]をクリックします。
    12. 次に属性マッピングが表示されます。PingOneの属性がscim.dev側のどの属性に対応するかの設定で、デフォルトのマッピングで進めます。このまま[Save]をクリックします。
  4. 作成したルールの右側にあるトグルをクリックして、ルールを有効化します。

動作確認

  1. PingOne側でテストユーザーを作成または既存ユーザーをプロビジョニング対象にし、scim.dev の HTTP Log 画面でリクエストを確認します。
    1. POST /Users - ユーザー作成
    2. GET /Groups - グループ確認
    3. GET /Groups?filter=displayName...scim-test-tama - グループ検索
    4. POST /Groups - グループ作成 → 201 Created
      1. 正常にレスポンスが返っていることが確認できます。
  2. また、scim.dev の User Manager でユーザーが作成されたことを確認しました。
  3. 次に、PingOne側でユーザー属性を変更し、scim.dev で PUT /Users/{id} のレスポンスが来ているかを確認します。
    1. Primary Phoneを編集してみました。
    2. PUT /Users/{id} がステータス 200 で成功しています。
  4. 最後に、PingOne側でユーザー削除を実施し → scim.dev で DELETE /Users/{id} のレスポンスが来ているかを確認します。
    1. ユーザーを削除します。
    2. DELETE /Users/{id}が204 No Contentで成功しており、PingOne → scim.dev のSCIMデプロビジョニングが正常に動作していることが確認できました。

まとめ

今回は、PingOneのSCIMアウトバウンドプロビジョニングを使って、scim.devにユーザーとグループを同期する流れを紹介しました。SCIM接続の作成からプロビジョニングルールの設定まで、PingOneの管理コンソール上で完結し、特に難しい設定はありませんでした。

参考

この記事をシェア