38 SCIM REST APIを使用したOUDディレクトリ・データの管理

System for Cross-domain Identity Management (SCIM)は、HTTP(S)を介してアイデンティティ情報にアクセスするための標準プロトコルです。

トピック

OUD SCIMインタフェースは、LDAPが使用されていないアプリケーションがアイデンティティ・ストアとしてのOUDと統合したり、アイデンティティ情報をOUDにプロビジョニングしたりする上で役に立ちます。

38.1 SCIM REST APIの構成

設定時にOracle Unified Directoryに対するSCIM REST APIサポートを構成できます。

Oracle Unified Directoryは、HTTP(S)接続ハンドラを介してSCIMインタフェースを公開します。これらのハンドラは、OUDインスタンスの設定時に、または既存のインスタンスのdsconfigを介して有効にできます。

OUDインスタンスの設定時の接続ハンドラの構成

Oracle Unified Directoryサーバー・インスタンスの作成中に、コマンド行からoud-setupユーティリティをhttpPortおよびhttpsPortパラメータとともに実行し、SCIMインタフェースを構成します。

oud-setup --cli \
--adminConnectorPort 1444 \
--httpAdminConnectorPort 1888 \
--rootUserDN cn=Directory\Manager \
--rootUserPasswordFile /home/oracle/pwd.txt \
--ldapPort 1389 \
--ldapsPort 1636 \
--httpPort 1080 \
--httpsPort 1081 \ 
--generateSelfSignedCertificate \
--baseDN dc=example,dc=com \
--sampleData 200 \
--serverTuning jvm-default \
--offlineToolsTuning jvm-default \ 
--no-prompt \
--noPropertiesFile

既存のOUDインスタンスの接続ハンドラの構成

  1. 次のように、dsconfigコマンドライン・ユーティリティをcreate-connection-handlerサブコマンドを指定して実行し、接続ハンドラを作成します:

    ノート:

    OUDインスタンス用のHTTP/HTTPS接続ハンドラをすでに作成している場合は、dsconfigコマンドライン・ユーティリティをset-connection-handler-propサブコマンドを指定して実行し、既存の接続ハンドラを更新できます。

    HTTPポートの設定:

    dsconfig create-connection-handler \
    --handler-name "HTTP Connection Handler" \
    --type http \
    --set enabled:true \
    --set listen-port:1080 \ 
    --hostname localhost \
    --port 1444 \
    --portProtocol LDAP \
    --bindDN "cn=Directory Manager" \
    --bindPasswordFile /home/oracle/pwd.txt \
    --no-prompt

    HTTPSポートの設定:

    dsconfig create-connection-handler \
    --handler-name "HTTPS Connection Handler" \
    --type http \
    --set enabled:true \
    --set listen-port:1081 \
    --set use-ssl:true \
    --set trust-manager-provider:JKS \
    --set key-manager-provider:JKS \
    --hostname localhost \
    --port 1444 \
    --portProtocol LDAP \
    --bindDN "cn=Directory Manager" \ 
    --bindPasswordFile /home/oracle/pwd.txt \
    --no-prompt
  2. 次のように、RESTエンドポイントを構成します:
    1. REST Server拡張機能を有効にします。
      dsconfig set-extension-prop \
      --Extension-name 'REST Server' \
      --set enabled:true \ 
      --hostname localhost \
      --port 1444 \
      --portProtocol LDAP \
      --trustAll \
      --bindDN "cn=Directory Manager" \
      --bindPasswordFile /home/oracle/pwd.txt \
      --no-prompt
    2. ディレクトリ・エンドポイントを有効にします。
      dsconfig set-directory-end-point-prop \
      --set enabled:true \ 
      --hostname localhost \
      --port 1444 \
      --portProtocol LDAP \
      --trustAll \
      --bindDN "cn=Directory Manager" \
      --bindPasswordFile /home/oracle/pwd.txt \
      --no-prompt
  3. OUDインスタンスを再起動します。

38.2 SCIM REST APIの使用

この項では、SCIMインタフェースを介してREST APIコールを実行する方法を示すサンプル・プログラムを複数提供します。

38.2.1 エントリの作成

POSTメソッドを使用してHTTPリクエストを送信することにより、SCIM APIを使用してユーザー・エントリを作成できます。

SCIMインタフェースを介してエントリを作成するには、次のペイロードを使用してURI /iam/directory/oud/scim/v1/Usersにリクエストを送信します。

{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User",
    "urn:ietf:params:scim:schemas:extension:oracle:2.0:OUD:User",
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
  ],
  "name": [
    {
      "formatted": "First name Last name",
      "givenName": " First name ",
      "familyName": " Last name "
    }
  ],
   "password": [
    {
      "value": "password"
    }
  ],
"urn:ietf:params:scim:schemas:extension:oracle:2.0:OUD:User": {
    "employeenumber": "727",
    "objectClass": [
      {
        "value": "top"
      }
    ],
    "mobile": [
      {
        "value": "+1 503 555 0163"
      }
    ],
    "departmentnumber": [
      {
        "value": "1"
      }
    ]
  },
  "emails": [
    {
      "value": "First name@example.com"
    }
  ],
  "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
    "department": [
      {
        "value": "1"
      }
    ],
    "employeeNumber": [
      {
        "value": "727"
      }
    ]
  },
  "userName": [
    {
      "value": "First name"
    }
  ]
}
上記のペイロードを使用してエントリを作成すると、次のレスポンス本文が生成されます。
{
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User",
        "urn:ietf:params:scim:schemas:extension:oracle:2.0:OUD:User",
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
    ],
    "name": [
        {
            "formatted": "First name Last name",
            "givenName": " First name ",
            "familyName": " Last name "
        }
    ],
    "urn:ietf:params:scim:schemas:extension:oracle:2.0:OUD:User": {
        "objectClass": [
            {
                "value": "top"
            },
            {
                "value": "organizationalPerson"
            },
            {
                "value": "person"
            },
            {
                "value": "inetOrgPerson"
            }
        ],
        "mobile": [
            {
                "value": "+1 503 555 0163"
            }
        ]
    },
    "meta": {
        "location": "http://localhost:2080/iam/directory/oud/scim/v1/Users/ad55a34a-763f-358f-93f9-da86f9ecd9e4",
        "resourceType": "User"
    },
    "emails": [
        {
            "value": "First name@example.com"
        }
    ],
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
        "department": [
            {
                "value": "1"
            }
        ],
        "employeeNumber": [
            {
                "value": "727"
            }
        ]
    },
    "userName": [
        {
            "value": "First name"
        }
    ],
    "id": "ad55a34a-763f-358f-93f9-da86f9ecd9e4"
}

38.2.2 エントリの変更

PATCHメソッドを使用してHTTPリクエストを送信することにより、SCIM APIを使用してユーザー・エントリを変更できます。

SCIMインタフェースを介してエントリを変更するには、次のペイロードを使用してURI /iam/directory/oud/scim/v1/Users/<Entry UUID> にリクエストを送信します。

ノート:

エントリUUIDを指定することにより、特定のエントリの詳細を検索できます。このエントリUUIDは、エントリの作成時にランダムに生成される一意の値です。
{
"schemas":
  [
    "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations":
  [
    {
      "op": "replace",
      "path": "urn:ietf:params:scim:schemas:core:2.0:User:password",
      "value": [ "password" ]
    }
  ]
}
上記のペイロードを使用してエントリを変更すると、次のレスポンス本文が生成されます。
{
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User",
        "urn:ietf:params:scim:schemas:extension:oracle:2.0:OUD:User",
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
    ],
    "name": [
        {
            "formatted": " Replaced First name Last name",
            "givenName": " First name ",
            "familyName": " Last name "
        }
    ],
    "urn:ietf:params:scim:schemas:extension:oracle:2.0:OUD:User": {
        "objectClass": [
            {
                "value": "top"
            },
            {
                "value": "organizationalPerson"
            },
            {
                "value": "person"
            },
            {
                "value": "inetOrgPerson"
            }
        ],
        "mobile": [
            {
                "value": "+1 503 555 0163"
            }
        ]
    },
    "meta": {
        "location": "http://localhost:2080/iam/directory/oud/scim/v1/Users/ad55a34a-763f-358f-93f9-da86f9ecd9e4",
        "resourceType": "User"
    },
    "emails": [
        {
            "value": "First name@example.com"
        }
    ],
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
        "department": [
            {
                "value": "1"
            }
        ],
        "employeeNumber": [
            {
                "value": "727"
            }
        ]
    },
    "userName": [
        {
            "value": "First name"
        }
    ]
}