SCIMグループAPIの基本
Liferay DXP 2024.Q1+/Portal GA112+
Liferayは、SCIMグループに対してCRUD操作を実行するためのヘッドレスAPIを提供し、SCIMグループの情報を社内アプリケーションと同期させます。 SCIM グループは、Liferay の ユーザー グループ に類似しています。 SCIMグループを管理するには、API エクスプローラーから /scimエンドポイントを使用します。
グループの追加
Liferay DXP の新しいインスタンスを起動するには、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:2026.q1.9-lts
http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して Liferay にサインインします。 プロンプトが表示されたら、パスワードを learn に変更してください。
Liferayが起動したら、
-
SCIM Group API の基本 をダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-p9z7.zip -Ounzip liferay-p9z7.zip -
cURLスクリプトを使用して、LiferayにSCIMグループを追加します。 コマンドラインで、
curlフォルダーに移動します。Groups_POST_ToInstance.shスクリプトを実行します。./Groups_POST_ToInstance.shJSONレスポンスには、新しいSCIMグループの追加が示されています。
{ "displayName": "Foo", "meta": { "created": "2024-03-13T11:51:35Z"、 "場所": "http://localhost:8080/o/scim/v1.0/v2/Groups/36449"、 "最終更新日": "2024-03-13T11:51:35Z"、 "resourceType": "Group" }、 "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "externalId": "eef7340d-3bc8-201b-76ae-411ec3a4ed1e", "id": "36449" } -
グローバルメニュー (
) を開き、 コントロールパネル → ユーザーグループ に移動してこれを確認します。 新しいユーザーグループが追加されたことを確認してください。
-
または、Javaクライアントを使用してRESTサービスを呼び出します。
javaフォルダに移動し、ソースファイルをコンパイルします。javac -classpath .:* *.java -
Groups_POST_ToInstanceクラスを実行します。java -classpath .:* Groups_POST_ToInstance
cURLコマンドを調べてみましょう
Groups_POST_ToInstance.sh スクリプトは、cURL コマンドを使用して REST サービスを呼び出します。
curl \
"http://localhost:8080/o/scim/v1.0/v2/Groups" \
--data-raw '
{
"displayName": "Foo"
}' \
--header "Content-Type: application/scim+json" \
--request "POST" \
--user "test@liferay.com:learn"
コマンドの引数は以下のとおりです。
| 引数 | 説明 |
|---|---|
"http://localhost:8080/o/scim/v1.0/v2/Groups" | RESTサービスエンドポイント |
--data-raw "{ "displayName": "Foo" }" | 投稿するデータ |
--header "Content-Type: application/scim+json" | リクエスト本文の形式がJSONであり、SCIMプロトコルに準拠していることを示します。 |
--リクエスト "POST" | 指定されたエンドポイントで呼び出すHTTPメソッド |
--user "test@liferay.com:learn" | 基本的な認証情報 |
ここでは、デモンストレーション目的で基本認証を使用しています。 本番環境では、 OAuth2 を介してユーザーを認証する必要があります。 OAuth2 を使用した React アプリケーションの例については、 OAuth2 を使用してユーザーを認証する を参照してください。
Javaクラスを調べます
Groups_POST_ToInstance.java クラスは、 GroupResource サービスを呼び出すことにより、SCIM グループを追加します。
public static void main(String[] args) throws Exception {
GroupResource.Builder builder = GroupResource.builder();
GroupResource groupResource = builder.authentication(
"test@liferay.com", "learn"
).build();
groupResource.postV2Group(
new Group() {
{
displayName = "Foo";
}
});
}
このクラスは、わずか3行のコードでRESTサービスを呼び出します。
| 行(省略形) | 説明 |
|---|---|
GroupResource.Builder builder = ... | Builder を取得して、 GroupResource サービス インスタンスを生成します。 |
GroupResource groupResource = builder.authentication(...).build(); | 基本認証を使用して、 GroupResource サービス インスタンスを生成します。 |
groupResource.postV2Group(...); | groupResource.postV2Group メソッドを呼び出します。 |
プロジェクトには com.liferay.scim.rest.client.jar ファイルが依存関係として含まれていることに注意してください。 すべての REST アプリケーションのクライアント JAR 依存関係情報は、インストール先の API エクスプローラーで /o/api (例: http://localhost:8080/o/api ) で確認できます。
main メソッドのコメントは、クラスを実行する方法を示しています。
サービスの詳細については、 GroupResource を参照してください。
Groups_GET_FromInstance.sh
コマンド:
./Groups_GET_FromInstance.sh
コード:
curl \
"http://localhost:8080/o/scim/v1.0/v2/Groups" \
--user "test@liferay.com:learn"
Groups_GET_FromInstance.java
コマンド:
java -classpath .:* Groups_GET_FromInstance
コード:
public static void main(String[] args) throws Exception {
GroupResource.Builder builder = GroupResource.builder();
GroupResource groupResource = builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(groupResource.getV2Groups(null, null));
}
Liferayインスタンスの グループ オブジェクトはJSON形式でリストされています。
詳細については、 APIクエリパラメータ をお読みください。
グループを組む
以下のcURLまたはJavaコマンドを使用して、特定のグループを取得します。 1234 をグループの ID に置き換えてください。
Groups_GET_FromInstance.[java|sh] を使用してすべてのグループのリストを取得し、特定のグループの id をメモしてください。
Groups_GET_ById.sh
コマンド:
./Groups_GET_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/scim/v1.0/v2/Groups/${1}" \
--user "test@liferay.com:learn"
Groups_GET_ById.java
コマンド:
java -classpath .:* -DgroupId=1234 Groups_GET_ById
コード:
public static void main(String[] args) throws Exception {
GroupResource.Builder builder = GroupResource.builder();
GroupResource groupResource = builder.authentication(
"test@liferay.com", "learn"
).build();
System.out.println(
groupResource.getV2GroupById(
String.valueOf(System.getProperty("groupId"))));
}
グループ フィールドは JSON に表示されます。
クエリパラメータの使用
クエリパラメータ を使用して、取得したデータをフィルタリングできます。 以下の例では、表示名に基づいてグループ分けを行います。
Groups_GET_ByDisplayName.sh
コマンド:
./Groups_GET_ByDisplayName.sh 1234
コード:
curl \
"http://localhost:8080/o/scim/v1.0/v2/Groups?filter=displayName%20eq%20%22${1}%22" \
--user "test@liferay.com:learn"
クエリパラメータを使用することで、返されるデータを絞り込むこともできます。 グループ リソースをクエリする場合、フィルタリングは displayName 属性のみをサポートします。 例えば、上記のスクリプトのクエリを次のように変更することで、メンバーリストが返されないようにすることができます。
http://localhost:8080/o/scim/v1.0/v2/Groups?filter=displayName%20eq%20%22${1}%22
グループを配置する
以下のcURLコマンドとJavaコマンドを使用して、既存のグループを更新します。 1234 をグループの ID に置き換えてください。
Groups_PUT_ById.sh
コマンド:
./Groups_PUT_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/scim/v1.0/v2/Groups/${1}" \
--data-raw '
{
"displayName": "Bar"
}' \
--header "Content-Type: application/scim+json" \
--request "PUT" \
--user "test@liferay.com:learn"
Groups_PUT_ById.java
コマンド:
java -classpath .:* -DgroupId=1234 Groups_PUT_ById
コード:
public static void main(String[] args) throws Exception {
GroupResource.Builder builder = GroupResource.builder();
GroupResource groupResource = builder.authentication(
"test@liferay.com", "learn"
).build();
groupResource.putV2Group(
String.valueOf(System.getProperty("groupId")),
new Group() {
{
displayName = "Bar";
}
});
}
グループを削除する
以下のcURLコマンドとJavaコマンドを使用して、既存のグループを削除します。 1234 をグループの ID に置き換えてください。
Groups_DELETE_ById.sh
コマンド:
./Groups_DELETE_ById.sh 1234
コード:
curl \
"http://localhost:8080/o/scim/v1.0/v2/Groups/${1}" \
--request "DELETE" \
--user "test@liferay.com:learn"
Groups_DELETE_ById.java
コマンド
java -classpath .:* -DgroupId=1234 Groups_DELETE_ById
コード:
public static void main(String[] args) throws Exception {
GroupResource.Builder builder = GroupResource.builder();
GroupResource groupResource = builder.authentication(
"test@liferay.com", "learn"
).build();
groupResource.deleteV2Group(
String.valueOf(System.getProperty("groupId")));
}
グループにパッチを適用する
Liferay DXP 2025.Q2+
以下のcURLコマンドを使用して、既存のグループにパッチを適用します。 1234 をグループの ID に置き換えてください。
コマンド:
./Groups_PATCH_ById.sh 1234
コード:
API Explorer には、 グループ のすべてのサービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。