Crowd Data Center のサービス アカウント
サービス アカウントは、個人に関連付けられていない特殊な Data Center アカウントです。このアカウントは OAuth 2.0 承認で Crowd にアクセスし、ログインにパスワードを必要としません。
サービス アカウントにより、Data Center インスタンスのサービス、統合、スクリプト ユーザー、アプリの ID を管理できます。サービス アカウントは、ユーザー アカウントと同じ方法で管理できます。
Crowd 7.0 リリースでは、REST API 経由で Crowd のサービス アカウントを作成および管理できるようになりました。将来的には、Crowd およびその他の製品で、ユーザー インターフェイスを介して同じ操作ができるようになる予定です。
Crowd がサポートするエンドポイント
Crowd 7.0 では、スクリプティング、バックグラウンド ジョブ、その他の自動化タスクなどにおいて、ユーザー コンテキストを必要とせずに Crowd とやり取りする手段として、サービス アカウントのサポートが導入されています。
サービス アカウントの承認は OAuth 2.0 のクライアント認証情報を介して処理されます。現時点では、サービス アカウントで次の REST エンドポイントを使用できます。
Group Admin (グループ管理者) (
current user
のコンテキストがないため、Search administered groups
は除く)User Admin (ユーザー管理者) (
current user
のコンテキストがないため、Search users
は除く)
Crowd でサービス アカウントを作成する
Data Center 製品内からサービス アカウントを作成できます。サービス アカウントの作成時に、OAuth 2.0 承認に使用するクライアント ID とクライアント シークレットが生成されます。
注: 現在利用できるスコープは APPLICATION のみです。
Crowd でサービス アカウントを作成するには、以下を使用します。
POST {crowd_url}/rest/service-accounts/latest/service-accounts
{ "displayName": "Brand new service account", "scopes": ["APPLICATION"], "expiryDuration": 2592000, "description": "This is my new service account for accessing Crowd" }
パラメーター
displayName (文字列) → サービス アカウントの名前。
scopes (文字列の配列) → 現時点では、スコープは
APPLICATION
とする必要があります。これ以外の場合、Crowd’s
のいずれのエンドポイントにもアクセスできません。expiryDuration (秒単位の整数) → 認証情報の有効期間。これを過ぎると、認証情報のローテーションが必要になります。指定した秒数を過ぎた場合、
Service Account
の認証情報の再生成が必要になります (認証情報の処理の詳細については、下記を参照してください)。この期間の上限は 2 年です。description (文字列) → サービス アカウントの説明。
レスポンス:
{ "id": 1179649, "active": true, "name": "service-account-35b67653-f18d-4cad-bc0e-f2834859643c", "displayName": "Brand new service account", "description": "random description", "resourceRestrictions": [], "authMethods": [ { "type": "OAuth2", "id": "89efcc0f-8fb5-4d91-98e1-3d20bdc4ec74", "clientId": "de2782fd6ff6dbd09bf8ed4082cf203c", "clientSecret": "5a6f7f83958b110419fb90bd2bb119a8b12fb431bd79b68f2c7ed01eae5e8c6f", "lastRotatedAt": "2025-07-31T12:51:37.500Z", "expiryDuration": 2592000, "expiryDate": "2025-08-30T12:51:37.500Z", "expirySoon": false, "author": "admin", "scopes": [ "APPLICATION" ] } ] }
返されるフィールド:
送信したフィールド以外に、次のフィールドが返されます。
id →
Service Account
の一意の識別子active →
Service Account
が現在使用されているか、アーカイブされているか。name →
Service Account
の一意の名前。監査などの場合に使用されます。resourceRestrictions → これらの制限は
Crowd
内では適用されないため無視して構いません。authMethods → 現時点では
OAuth2
のみがサポートされています。外部サービスが使用する構成を表します。OAuth2
経由でCrowd
とやり取りする際には、ここにある認証情報を使用する必要があります。id →
OAuth2
構成の一意の識別子clientId →
access token
の生成に使用する必要があるOAuth2
構成のclientId
。アクセス トークンを生成するにはこの値が必要です。clientSecret →
OAuth2
構成のclientSecret
。アクセス トークンを生成するにはこの値が必要です。lastRotatedAt →
clientId/clientSecret
の最終更新日時。expiryDate →
clientId/clientSecret
のセットがいつ期限切れになるか。author → この
Service Account
を生成したユーザー
Crowd でサービス アカウントを管理する
サービス アカウントの作成後は、アカウントの詳細情報を更新したり、アカウント認証情報をローテーションしたりできます。
サービス アカウントの詳細情報を更新する
アカウントの詳細情報を更新するには、以下を使用します。
PUT {crowd_url}/rest/service-accounts/latest/service-accounts/{id}
{
"displayName": "a new display name",
"description": "a new description"
}
expiryDuration
などその他のフィールドを変更するには、サービス アカウントをアーカイブして新しいアカウントを作成する必要があります。
サービス アカウントの認証情報をローテーションする
セキュリティ上の理由から、サービス アカウントの認証情報には有効期限が設定されています (有効期限は最長 2 年)。
認証情報をローテーションするには、次の手順を実行します。
Service Account
が使用している現在のOAuth2
認証情報のclientId
を確認し、次のエンドポイントに POST リクエストを送信します。POST {{crowd_url}}/rest/oauth2/latest/rotate/{clientId}
OAuth2 id2
を使用して GET リクエストを送信し、次のエンドポイントで認証情報を取得して、サービス アカウント アプリの OAuth 2 認証情報を更新します。GET {{crowd_url}}/rest/oauth2/latest/client/{oAuth2ConfigId}
{ "id": "cf1b543a-de85-473f-9813-b83c86387936", "clientId": "9693b2e52647e3664e3e1e15b135e035", "clientSecret": {someSecret}, "name": "service-account-edcee821-62af-43d6-8c15-91f9c41d6fc2", "redirects": [], "supportedGrantTypes": [ "client_credentials" ], "userKey": "admin", "scope": "APPLICATION", "rotatedClientId": "a226d78aa6b31a54ec8702a14b6de89e", "rotatedClientSecret": {someRotatedSecret}", "expiryDuration": 2592000 }
パラメーター
clientId → OAuth2 構成で使用する必要のある現在のクライアント ID
clientSecret → OAuth2 構成で使用する必要のある現在のクライアント シークレット
rotatedClientId → 古いクライアント ID。この ID を使用するアプリがある場合は、
clientId
で更新する必要があります。rotatedClientSecret → 古いクライアント シークレット。このシークレットを使用するアプリがある場合は、古い値を
clientSecret
で更新する必要があります。
Crowd でサービス アカウントを検索する
サービス アカウントを検索するには、次の手順に従います。
GET {crowd_url}/rest/service-accounts/latest/service-accounts/?start=0&limit=25&active=true
このエンドポイントは、ページネーションとクエリ パラメーターによる active
フィルタリングもサポートしています。既定では、開始値が 0
、制限が 25
、active
が true に設定されています。
Crowd でサービス アカウントをアーカイブする
アトラシアンはサービス アカウントの削除をサポートしていませんが、アーカイブすることは可能です。
この操作は元に戻せません。OAuth 2.0 クライアントと、このサービス アカウントに関連付けられたクライアントによって OAuth 2.0 サーバーから取得したすべてのトークンも削除されます。
サービス アカウントをアーカイブするには、次を使用します。
DELETE {crowd_url}/rest/service-accounts/latest/service-accounts/{id}