37 REST APIを使用したOracle Unified Directoryの管理

Oracle Unified Directoryでは、ユーザーがREST APIを使用して管理および構成を実行できます。管理REST APIは、HTTP管理コネクタを介して公開されます。HTTPメソッドGET、POST、PATCHまたはDELETEを使用して基本操作を実行できます。

37.1 管理REST APIの構成

OUDインスタンスの設定時にOUD管理インタフェースに対するREST APIサポートを構成できます。OUDインスタンスを管理するためのREST APIを公開するために、OUDインスタンスの設定時にHTTP管理コネクタ・ポートを構成する必要があります。

HTTP管理コネクタの詳細は、「HTTP管理コネクタ」を参照してください。

OUDインスタンス設定時のHTTP管理コネクタ・ポートの構成

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

oud-setup --cli 
--adminConnectorPort 1444
--httpAdminConnectorPort 1888 
--rootUserDN cn=Directory\ Manager 
--rootUserPasswordFile password.file 
--ldapPort 1389
--ldapsPort 1636 
--generateSelfSignedCertificate 
--baseDN dc=example,dc=com 
--addBaseEntry 
--serverTuning jvm-default 
--offlineToolsTuning jvm-default 
--no-prompt 
--noPropertiesFile

既存のOUDインスタンスのHTTP管理コネクタ・ポートの構成

dsconfigコマンド行ユーティリティをset-administration-connector-propサブコマンドとともに実行することにより、管理REST APIをサポートするHTTP管理コネクタを公開するための既存のOUDインスタンスを更新します。

dsconfig set-administration-connector-prop  \ 
--connector-name HTTP \
--set listen-port:1888 \  
--set enabled:true \           
--hostname localhost\           
--port 1444 \           
--portProtocol LDAP \           
--trustAll \           
--bindDN cn=Directory\ Manager \          
--bindPasswordFile password.file \          
--no-prompt

37.2 OUD管理REST APIの起動

cURLコマンドを使用してOUD管理REST APIを起動し、特定のペイロードを使用してリクエストをhttps://<OUD HOST>:<HTTP Admin Connector Port>/rest/v1/adminに送信することにより、管理タスクを実行できます。

OUD管理REST APIを起動するためのcURLコマンドの例を次に示します。

curl -X POST -k -u '<root User DN>':<Password for root User DN> https://<OUD Host>:<HTTP Admin Connector Port>/rest/v1/admin -H 'cache-control: no-cache' -H 'content-type: application/json' -d '<Payload>'

37.3 管理REST APIの使用

この項には、管理REST APIインタフェースを使用して管理タスクを実行する方法を示すサンプル・プログラムが複数含まれます。

37.3.1 ネットワーク・グループの検索

POSTメソッドを使用してHTTPリクエストを送信することにより、特定のネットワーク・グループを検索できます。

特定のネットワーク・グループに関する詳細を取得するには、次のペイロードを使用してリクエストをhttps://<OUD HOST>:<HTTP Admin Connector Port>/rest/v1/adminに送信します。

{
"msgType" : "urn:ietf:params:rest:schemas:oracle:oud:1.0:SearchRequest",
"dn" : "cn=network-group,cn=Network Groups,cn=config",
"scope" : "sub",
"filter" : "(objectclass=*)",
"requiredAttributes" : [ "ds-cfg-priority", "ds-cfg-enabled" ],
"base" : "cn=Network Groups,cn=config"
}

上記のペイロードを使用してネットワーク・グループを検索すると、次のレスポンス本文が生成されます。

{
    "msgType": "urn:ietf:params:rest:schemas:oracle:oud:1.0:SearchResponse",
    "totalResults": 2,
    "searchResultEntries": [
        {
            "dn": "cn=Network Groups,cn=config",
            "attributes": {}
        },
        {
            "dn": "cn=network-group,cn=Network Groups,cn=config",
            "attributes": {
                "ds-cfg-priority": "1",
                "ds-cfg-enabled": "true"
            }
        }
    ]
}

37.3.2 ネットワーク・グループの追加

POSTメソッドを使用してHTTPリクエストを送信することにより、特定のネットワーク・グループを追加できます。

特定のネットワーク・グループRestNetworkGroupを追加するには、次のペイロードを使用してリクエストをhttps://<OUD HOST>:<HTTP Admin Connector Port>/rest/v1/adminに送信します。

{
"msgType" : "urn:ietf:params:rest:schemas:oracle:oud:1.0:AddRequest",
"dn" : "cn=RestNetworkGroup,cn=Network Groups,cn=config",
"attributes" : {
"objectclass" : ["top", "ds-cfg-network-group"],
"ds-cfg-priority" : ["0"],
"ds-cfg-enabled" : ["true"],
"cn" : ["RestNetworkGroup"]
}
}

上記のペイロードを使用してRestNetworkGroupを追加すると、次のレスポンス本文が生成されます。

{
    "msgType": "urn:ietf:params:rest:schemas:oracle:oud:1.0:AddResponse",
    "totalResults": 1,
    "searchResultEntries": [
        {
            "dn": "cn=RestNetworkGroup,cn=Network Groups,cn=config",
            "attributes": {
                "ds-cfg-enabled": "true",
                "cn": "RestNetworkGroup",
                "ds-cfg-priority": "0",
                "objectClass": [
                    "top",
                    "ds-cfg-network-group"
                ]
            }
        }
    ]
}

37.3.3 ネットワーク・グループの削除

POSTメソッドを使用してHTTPリクエストを送信することにより、特定のネットワーク・グループを削除できます。

ネットワーク・グループを削除するには、次のペイロードを使用してリクエストをhttps://<OUD HOST>:<HTTP Admin Connector Port>/rest/v1/adminに送信します。

{
"msgType" : "urn:ietf:params:rest:schemas:oracle:oud:1.0:DeleteRequest",
"dn" : "cn=RestNetworkGroup,cn=Network Groups,cn=config"
}

これは削除操作であるため、レスポンス本文は生成されません。

37.3.4 ネットワーク・グループの比較

POSTメソッドを使用してHTTPリクエストを送信することにより、特定のネットワーク・グループを比較できます。

ネットワーク・グループを比較するには、次のペイロードを使用してリクエストをhttps://<OUD HOST>:<HTTP Admin Connector Port>/rest/v1/adminに送信します。

{
"msgType" : "urn:ietf:params:rest:schemas:oracle:oud:1.0:CompareRequest",
"dn" : "cn=RestNetworkGroup,cn=Network Groups,cn=config",
"assertion" : "ds-cfg-enabled:true"
}

上記のペイロードを使用して比較操作を実行すると、次のレスポンス本文が生成されます。

{
    "msgType": "urn:ietf:params:rest:schemas:oracle:oud:1.0:CompareResponse",
    "compareResult": true
}

37.3.5 ネットワーク・グループの変更

POSTメソッドを使用してHTTPリクエストを送信することにより、ネットワーク・グループを変更できます。

ネットワーク・グループを変更するには、次のペイロードを使用してリクエストをhttps://<OUD HOST>:<HTTP Admin Connector Port>/rest/v1/adminに送信します。

{
"msgType" : "urn:ietf:params:rest:schemas:oracle:oud:1.0:ModifyRequest",
"operations" :
[
{
"opType" : "replace",
"attribute" : "ds-cfg-enabled",
"values" : ["false"]
}
]
}

上記のペイロードを使用して変更操作を実行すると、次のレスポンス本文が生成されます。

{
    "msgType": "urn:ietf:params:rest:schemas:oracle:oud:1.0:ModifyResponse",
    "totalResults": 1,
    "searchResultEntries": [
        {
            "dn": "cn=RestNetworkGroup,cn=Network Groups,cn=config",
            "attributes": {
                "ds-cfg-enabled": "false",
                "cn": "RestNetworkGroup",
                "ds-cfg-priority": "0",
                "objectClass": [
                    "top",
                    "ds-cfg-network-group"
                ]
            }
        }
    ]
}

37.3.6 GETメソッドを使用したネットワーク・グループの検索

GETメソッドを使用してHTTPリクエストをhttps://rest/v1/admin/cn=RestNetworkGroup,cn=Network Groups,cn=configに送信することにより、特定のネットワーク・グループを検索できます。

GETのリクエスト本文はありません。

検索操作を実行すると、次のレスポンス本文が生成されます。

{
    "msgType": "urn:ietf:params:rest:schemas:oracle:oud:1.0:SearchResponse",
    "totalResults": 1,
    "searchResultEntries": [
        {
            "dn": "cn=RestNetworkGroup,cn=Network Groups,cn=config",
            "attributes": {
                "ds-cfg-enabled": "true",
                "cn": "RestNetworkGroup",
                "ds-cfg-priority": "0",
                "objectClass": [
                    "top",
                    "ds-cfg-network-group"
                ]
            }
        }
    ]
}