Liberty プロファイルでの SCIM 操作

Liberty では、System for Cross-domain Identity Management (SCIM) 1.1 仕様がサポートされます。

リソースの取得

WebSphere Application Server Liberty は、SCIM 1.1 仕様をサポートします。 仕様について詳しくは、「http://www.simplecloud.info/」を参照してください。

既知のリソースを取得するには、構成された HTTP エンドポイントに GET 要求を送信する必要があります。 例えば、/Users/{id} または /Groups/{id} などです。

以下の例は、LDAP レジストリーに対する操作を示しています。
    <ldapRegistry id="LDAP1" realm="SampleLdapIDSRealm" host="9.127.1.90" port="1389" ignoreCase="true"
        baseDN="o=ibm,c=us" ldapType="IBM Tivoli Directory Server" searchTimeout="8m" recursiveSearch="true"
        bindDN="xxxxxx" bindPassword="xxxxxxx">
	    <ldapEntityType name="PersonAccount">
	        <rdnProperty name="uid" objectClass="inetOrgPerson"/>
                <objectClass>inetOrgPerson</objectClass>
            </ldapEntityType>
            <ldapEntityType name="Group">
	        <objectClass>groupofnames</objectClass>
		<objectClass>ibm-nestedGroup</objectClass>
		  <rdnProperty name="cn" objectClass="groupofnames"/>
	    </ldapEntityType>
    <attributeConfiguration>
        <attribute name="title" propertyName="honorificPrefix" syntax="String" entityType="PersonAccount">
        </attribute>
	<attribute name="initials" propertyName="middleName" syntax="String" entityType="PersonAccount">
        </attribute>
	<attribute name="st" propertyName="honorificSuffix" syntax="String" entityType="PersonAccount">
        </attribute>
	<attribute name="l" propertyName="homeStateOrProvinceName" syntax="String" entityType="PersonAccount">
        </attribute>
	<attribute name="street" propertyName="homeStreet" syntax="String" entityType="PersonAccount">
        </attribute>
	<attribute name="postalAddress" propertyName="homeCity" syntax="String" entityType="PersonAccount">
        </attribute>
	<attribute name="postalCode" propertyName="homePostalCode" syntax="String" entityType="PersonAccount">
        </attribute>
       <attribute name="postOfficeBox" propertyName="homeCountryName" syntax="String" entityType="PersonAccount">
        </attribute>
        <attribute name="departmentNumber" propertyName="photoURLThumbnail" syntax="String" entityType="PersonAccount">
        </attribute>
	<attribute name="description" propertyName="photoURL" syntax="String" entityType="PersonAccount">
        </attribute>
    </attributeConfiguration>
    <groupProperties>
        <memberAttribute name="member" dummyMember="uid=dummy" objectClass="groupOfNames" scope="direct"/>
	<memberAttribute name="ibm-memberGroup" objectClass="ibm-nestedGroup" scope="direct"/>
    </groupProperties> 
</ldapRegistry>
LDAP からリソースを取得するには、 https://localhost:9090/ibm/api/scim/Users/uid=jsmith,o=ibm,c=us として GET 要求を送信する必要があります。

リソースの照会

リソースを照会するには、構成された HTTP エンドポイントに GET 要求を送信し、検索のためのフィルターを指定する必要があります。 また、attributes パラメーターを指定して、戻されたリソースから値のサブセットを戻し、ページとソートのパラメーターを指定して、戻されたリソースを整理することもできます。 以下の例は、いくつかのフィルター・オプションを示したものです。
  • 値のサブセットを取得するためのパラメーターを指定します。例えば、 https://localhost:9090/ibm/api/scim/Users?filter=givenname sw "Jo" と指定すると、名前が "Jo" で始まるすべてのユーザーを取得します。
  • attributes パラメーターを指定して、値のサブセットを取得します。例えば、 https://localhost:9090/ibm/api/scim/Users?filter=givenname sw "Jo"&attributes=username,emails&filter=name.familyname eq "Smith" と指定すると、"Jo" で始まり、姓が "Smith"であるユーザー名の E メール・アドレスを取得します。
  • ページとソートのパラメーターを指定して、整理されたリソースを取得します。 例えば、https://localhost:9090/ibm/api/scim/Users?filter=givenname sw "Jo"&attributes=username&sortBy=username&startIndex=3&count=5 と指定すると、"Jo" で始まり、姓が "Smith" のユーザー名を各ページに 5 つ含むソート結果の 3 ページ目を取得します。
注:
  • フィルターに指定された値で大/小文字が区別されるかどうかは、基礎となる統合リポジトリーによって決まります。 LDAP の場合、属性が大/小文字を区別する LDAP 属性にマップされていない限り、デフォルトで値の大/小文字は区別されません。
  • 検索フィルターでユーザー名は使用できません。
  • SCIM 属性をサポートしない基本レジストリー、SAF レジストリー、またはカスタム・レジストリーを統合した場合、 フィルター・パターンは常にユーザー名に対して検索され、ユーザー名属性のみが戻されます。

リソースの作成

新規リソースを作成するには、リソース・エンドポイント、つまり Users または Groups に POST 要求を送信する必要があります。 POST のコンテンツは、ユーザーの json オブジェクトを含み、HTTP ヘッダー content-type は application/json に設定されなければなりません。
注: application/xml のコンテンツ・タイプはサポートされません。
ユーザーを作成するには、以下の要求が https://localhost:9090/ibm/api/scim/Users Content-Type にポストされる必要があります。
Content-Type: application/json
Content-Length: ...

{
  "schemas":["urn:scim:schemas:core:1.0"],
  "userName":"bjensen",
  "externalId": "uid=bjensen,o=ibm,c=us",
  "name":{
    "familyName":"Jensen",
    "givenName":"Barbara"
  }
}

ユーザー・レジストリーにユーザーまたはグループを正しく作成するために必要なすべての属性が、要求に含まれていなければなりません。 例えば、バックエンド Tivoli Directory Server LDAP で、ユーザー作成に必要な LDAP 属性の最小セットは、 uid、sn、および cn になります。そのため、ユーザー作成の要求には、 userNamegivenName、および familyName が含まれなければなりません。 ユーザー・レジストリーから何らかのスキーマ違反がある場合、作成操作は失敗します。

externalId 属性は ID のように動作するもので、指定が必要です。属性フォーマットは、バックエンド・ユーザー・レジストリーの仕様によって異なります。 前の例で、バックエンドは baseEntry o=ibm,c=us の LDAP サーバーで、 ユーザーの RDN プロパティーが UID として設定されるため、externalIduid=bjensen,o=ibm,c=us になります。

作成要求に基づいて、作成されたユーザー・オブジェクトが戻されます。
{
    "schemas":["urn:scim:schemas:core:1.0"],
    "id":"uid=bjensen,o=ibm,c=us",
    "userName":"bjensen",
    "externalId":"uid=bjensen,o=ibm,c=us",
    "name":{
          "formatted":"Barbara Jensen",
          "familyName":"Jensen",
          "givenName":"Barbara"
    },
    "meta":{
         "lastModified":"2015-09-15T14:30:11",        "location":"https:¥¥localhost:9090¥ibm¥api¥scim¥Users¥uid=bjensen,o=ibm,c=us",
         "created":"2015-09-15T14:30:11"
    }
}
複数の LDAP が構成されていて、作成操作を起動する必要がある場合は、エンティティーのデフォルトの親が定義されていなければなりません。 定義された親は、新しいエンティティーが作成される際の基本エントリーを指定します。 以下の例は、PersonAccount のデフォルトの親の構成を示しています。
<federatedRepository>
    <primaryRealm name="WIMRegistry">
        <participatingBaseEntry name="o=ibm,c=us"/>
        <participatingBaseEntry name="o=ldap"/>
    </primaryRealm>
    <supportedEntityType>
        <defaultParent>o=ldap</defaultParent>
        <name>PersonAccount</name>
    </supportedEntityType>
</federatedRepository>

リソースの変更

リソースを変更するには、リソース・エンドポイント、つまり、/Users または /Groups に PUT 要求を送信する必要があります。 PUT 要求は、リソースの完全更新を実行します。 入力に指定されていない属性は削除されます。
注: PATCH による部分更新はサポートされません。
前に作成されたリソースを変更するには、以下の要求が https://localhost:9090/ibm/api/scim/Users/uid=bjensen,o=ibm,c=us にポストされる必要があります。
Content-Type: application/json
Content-Length: ...

{
  "schemas":["urn:scim:schemas:core:1.0"],
  "userName":"bjensen",
  "externalId":"uid=bjensen,o=ibm,c=us",
  "name":{
    "familyName":"Jensen",
    "givenName":"Barb"
  }
}
この要求では、オブジェクトの名を Barbara から Barb に変更します。 URL に指定された ID は、ユーザー・オブジェクトに指定された externalId に一致する必要があります。
グループ cn=employeeGroup,o=ibm,c=us を変更してグループ・メンバーシップを変えるには、 メンバー属性を指定する必要があります。
Content-Type: application/json
Content-Length: ...
{
    "id":"cn=employeeGroup,o=ibm,c=us",
    "schemas":["urn:scim:schemas:core:1.0"],
    "displayName":"employeeGroup",
    "externalId":"cn=employeeGroup,o=ibm,c=us",
    "members":[{"value":"uid=bjensen,o=ibm,c=us", "type":"User"},{"value":"cn=consultants,o=ibm,c=us", "type":"Group"}]
}
グループ cn=employeeGroup,o=ibm,c=us を変更してグループからすべてのメンバーを削除するには、 空のメンバー属性を指定する必要があります。
Content-Type: application/json
Content-Length: ...
{
    "id":"cn=employeeGroup,o=ibm,c=us",
    "schemas":["urn:scim:schemas:core:1.0"],
    "displayName":"employeeGroup",
    "externalId":"cn=employeeGroup,o=ibm,c=us",
    "members":[]
}

リソースの削除

リソースを削除するには、リソース・エンドポイント、つまり、/Users または /Groups に DELETE 要求を送信する必要があります。 例えば、前の例で作成されたユーザー uid=bjensen,o=ibm,c=us を削除するには、 https://localhost:9090/ibm/api/scim/Users/uid=bjensen,o=ibm,c=us に要求を送信します。
注: SCIM は、Java 7 以降でのみ実行されます。

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwlp_sec_scim_operations
ファイル名: rwlp_sec_scim_operations.html