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:2025.q1.6-lts
http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して Liferay にサインインします。 プロンプトが表示されたら、パスワードを learnに変更します。
Liferayが起動したら、
-
SCIM Group API Basics をダウンロードして解凍します。
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", "location": "http://localhost:8080/o/scim/v1.0/v2/Groups/36449", "lastModified": "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サービスを呼び出します。
javajavac -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プロトコルに準拠していることを示します。
--request "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 には、 グループ のすべてのサービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。
関連トピック