SCIMグループAPIの基礎
Liferay DXP 2024.Q1+/ポータル GA112+
Liferay は、SCIM グループに対して CRUD 操作を実行し、その情報を会社のアプリケーションと同期させるためのヘッドレス API を提供します。 SCIM グループは、Liferay の ユーザー グループ に類似しています。 SCIM グループを管理するには、 API エクスプローラー から /scim エンドポイントを使用します。
グループの追加
新しいLiferay DXPインスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:2025.q1.6-lts
メールアドレス test@liferay.com とパスワード testを使用して、 http://localhost:8080 で Liferay にサインインします。 プロンプトが表示されたら、パスワードを learnに変更します。
Liferayが起動したら、
-
SCIM グループ 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", "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) で確認できます。
注
メイン メソッドのコメントは、クラスの実行を示しています。
重要
サービスの詳細については、 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"
クエリ パラメータを使用して、返されるデータを絞り込むこともできます。 たとえば、 グループ リソースをクエリする場合、上記のスクリプトのクエリを次のように変更すると、メンバーのリストが返されないようにすることができます。
http://localhost:8080/o/scim/v1.0/v2/Groups?excludedAttributes=members&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年第2四半期以降
次の cURL コマンドを使用して既存のグループにパッチを適用します。 1234 をグループのIDに置き換えます。
コマンド:
./Groups_PATCH_ById.sh 1234
コード:
API エクスプローラー には、すべての グループ サービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。
関連トピック