サービス・アクセス・ポリシーの設定
サービス・アクセス・ポリシーは、リモートで呼び出せるサービスまたはサービスメソッドを定義します。 それらの多くを一度に適用して、複合効果を生み出すことができます。 IPパーミッションに次ぐ)ウェブサービスの第二のセキュリティ層である。 ポータル管理者は、カスタムサービスアクセスポリシーを作成できます。 それらはその後、ポータルのトークン認証システム(OAuth 2)によって適用されます。
サービスアクセスポリシーは、Webサービス呼び出しによって公開されるメソッドのホワイトリストを定義します。 ワイルドカードを使用して、ホワイトリストに登録されたクラスとメソッドを定義できます。 サービスアクセスポリシーは、権限システムを尊重することに注意してください。 ポリシーがユーザーにリモートサービスへのアクセスを許可する場合、そのユーザーは引き続き、そのサービスを呼び出すための適切な権限を持っている必要があります。
デフォルトサービス・アクセス・ポリシー
サービス アクセス ポリシーを表示および管理するには、 グローバル メニュー (
) を開き、 コントロール パネル → 設定 → サービス アクセス ポリシー に移動します。

デフォルトで有効になっているサービスアクセスポリシーは18個あります。 これらのうち11件はシステム関連のものです。
| サービス・アクセス・ポリシー | 説明 | デフォルト設定で有効 |
|---|---|---|
| 資産カテゴリデフォルト | カテゴリ検索が可能になります。 | ✔ |
| ASSET_ENTRY_DEFAULT | アセットが取得されたときにアセットのビューカウンターを更新できるようにします。 | ✔ |
| アセットタグデフォルト | タグによる検索が可能になります。 | ✔ |
| AUTHORIZED_OAUTH2_SAP | OAuth 2によって承認されたすべてのRESTリクエストを許可します。 | ✔ |
| CALENDAR_DEFAULT | カレンダーで公開イベントを検索できるようにします。 | ✔ |
| CAPTCHA_DEFAULT | 認証なしのリクエストでヘッドレスCAPTCHA APIにアクセスできるようにします。 | ✔ |
| コマースデフォルト | コマースサービスのすべてのAPIにアクセスできるようになります。 カレンダー. | ✔ |
| オブジェクトデフォルト | オブジェクトエントリのすべてのAPIにアクセスできるようになります。 | ✔ |
| 検索候補 | 国/地域サービスへのアクセスを可能にし、ユーザーがその場で言語を切り替えることができるようにします。 認証されていないリクエストを含むすべてのリクエストに適用されます。 | ✔ |
| SYSTEM_DEFAULT | 国/地域サービスへのアクセスを可能にし、ユーザーがその場で言語を切り替えることができるようにします。 認証されていないリクエストを含むすべてのリクエストに適用されます。 | ✔ |
| SYSTEM_USER_PASSWORD | 任意のメソッドを呼び出すことができます。 もちろん、API関数には権限チェックが含まれているため、この呼び出しは、ユーザーが必要な権限を持っている場合にのみ機能します。 これは、AuthVerifierResult.isPasswordBasedAuthentication がtrueのリクエスト(つまりユーザー認証がパスワードを使用して行われたとき)に適用されます。 特定のAPI関数の呼び出しを完全に禁止する場合は、SYSTEM_USER_PASSWORDポリシーを*よりも制限の厳しいものに変更できます。 | ✔ |
SYSTEM_DEFAULT、および Default が Yes に設定されているその他のポリシーは、認証されていないリクエストを含むすべての受信リクエストに適用されます。
残りの7つのポリシーは、OAuthおよびJSONウェブサービスに関するものです。
| サービス・アクセス・ポリシー | 説明 | デフォルト設定で有効 |
|---|---|---|
| OAUTH2_analytics.read/write | Liferay Analytics Cloudと統合し、JSON Web サービスへのアクセスを可能にします。 | ✔ |
| OAUTH2_everything/read/documents/userprofile/write | Everythingポリシーは、さまざまな理由ですべてのJSON Webサービスへのアクセスを許可します。 Everythingとはすべて、つまりすべてのJSON Webサービスです(*に一致)。 その他は、その説明に適したメソッドシグネチャと一致します。 たとえば、OAUTH2_everything.readは、fetch、get、has、is、またはsearchで始まるすべてのメソッドに一致します。 | ✔ |
デフォルト設定では、システムに付属するすべてのWebサービスへのアクセスを提供する対応するスコープが使用可能になります。 OAuth 2アプリケーションは、スコープを事前に割り当てておくことで使用可能になります。 管理者は、使用するスコープを確認し、他のスコープを無効にする必要があります。
サービス・アクセス・ポリシーについて
サービス・アクセス・ポリシーを作成または編集するときは、次の点に注意してください。
-
サービスアクセスポリシー名は、ポータルインスタンスごとに一意である必要があります。
-
サービスアクセスポリシー名には、次の許可された文字のみを含めることができます。
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#:@-./_ -
サービス・アクセス・ポリシーのタイトルはローカライズできます。サービスアクセスポリシー名はローカライズできません。
-
許可されたサービス署名は、1行に1つずつ入力する必要があります。 ワイルドカード(
*)は、クラス名とメソッド名の両方に使用できます。 クラス名とメソッド名を区切るには、#記号を使用する必要があります。
たとえば、com.liferay.portal.kernel.service.UserServiceでは、UserServiceクラスの任意のメソッドを呼び出すことができます。 com.liferay.document.library.kernel.service.DLAppService#get*を使用すると、getで始まるDLAppServiceの任意のメソッドを呼び出すことができます。
次の例では、UserServiceクラスの任意のメソッドを呼び出すことができ、名前がgetで始まるDLAppServiceの任意のメソッドを呼び出すことができます。
com.liferay.portal.kernel.service.UserService
com.liferay.document.library.kernel.service.DLAppService#get*
デフォルトポリシーのカスタマイズ
デプロイされたアプリケーションや特定のモジュールのニーズに合わせて、デフォルトのサービスアクセスポリシーを上書きまたは調整できます。
デプロイされたLiferayアプリケーションは、独自のデフォルトポリシーを宣言できます。 これらの設定は、管理者によって変更または無効化される可能性があります。 プラグインは、ポリシーを再定義または更新した場合でも、ポリシーが存在することを常に検証できます。
デフォルトでは、LiferayのトンネリングサーブレットはSYSTEM_USER_PASSWORDサービスアクセスポリシーを使用します。 ただし、トンネリングサーブレット用に独自のポリシーを作成し、TunnelingServletAuthVerifierのservice.access.policy.nameプロパティを使用して、代わりに自分のポリシーを使用するように指定できます。
サービス・アクセス・ポリシーの作成
-
グローバルメニュー (
) を開き、セキュリティの下にある コントロール パネル → サービス アクセス ポリシー に移動します。 -
[新規]をクリックします。
-
ポリシーに名前を付けます。
-
ポリシーを有効にするには、[Enabled]トグルを切り替えます。
-
(オプション)認証されていないリクエストと認証済みのリクエストの両方にポリシーを適用する場合は、 を切り替えてデフォルト にします。
-
ポリシーにローカライズされたタイトルを付けます。
-
[サービスシグネチャーを許可]で、インストールされているサービスクラスの完全修飾名を入力します。
-
[メッソド名]で、サービスメソッド呼び出しの入力を開始します。
注コード補完は、
サービス クラスとメソッド名の両方のフィールドで使用できます。 -
別のサービスまたはメソッドを指定するには、プラスアイコンをクリックして別のエントリを追加します。
-
完了したら、 保存 をクリックします。
メソッドのシグネチャを事前にすべて把握している場合は、 をクリックして詳細モードに切り替え、 をクリックして、それらをすべて 1 つのフィールドに別々の行で入力できます。
サービス・アクセス・ポリシーモジュールについて
Liferayのサービス・アクセス・ポリシー機能は、サービス・アクセス・ポリシーモジュールによって提供されます。 このモジュールには、次の重要なクラスが含まれています。
com.liferay.portal.kernel.security.service.access.policy.ServiceAccessPolicy:ServiceAccessPolicyのパブリックインターフェースを定義します。com.liferay.portal.kernel.security.service.access.policy.ServiceAccessPolicyManager:ServiceAccessPolicyのインスタンスを取得するためのパブリックインターフェースを定義します。com.liferay.portal.kernel.security.service.access.policy.ServiceAccessPolicyManagerUtil:サービス・アクセス・ポリシー機能を、まだモジュール化されていないLiferayのコアの部分にブリッジします。com.liferay.portal.kernel.security.service.access.policy.ServiceAccessPolicyThreadLocal:ServiceAccessPolicyインスタンスをアクティブにします。
Liferay のサービス アクセス ポリシー モジュールは、ソース コードの modules/apps/service-access-policy フォルダーにあります。 次の3つのバンドルを実行すると、サービス・アクセス・ポリシー機能が提供されます(これらは[Liferay Home]/osgi/modulesフォルダにあります)。
com.liferay.service.access.policy.api.jarcom.liferay.service.access.policy.service.jarcom.liferay.service.access.policy.web.jar
これらのモジュールは、コントロールパネルからアクセスできるサービス・アクセス・ポリシー管理UIを提供します。 また、ServiceAccessPolicyのインターフェースとデフォルト実装も提供します。
サービス・アクセス・ポリシーモジュールの構成
-
グローバルメニュー (
) を開き、 コントロールパネル → システム設定 → API 認証 に移動します。
-
セキュリティ セクションの サービス アクセス ポリシー に移動します。 必要に応じてエントリ名を変更し、 保存 をクリックします。
デフォルトのサービスアクセスポリシー設定を編集できます。 AuthVerifier がポリシーを適用しない場合、デフォルトのポリシーを強制的に適用できます。
AuthenticatedAccessControlPolicyもあります。 ServiceAccessPolicyManager実装が存在する場合、このポリシーは何もしません。 ただし、サービス・アクセス・ポリシーモジュールが無効になっている場合、AuthenticatedAccessControlPolicyによってフォールバックが提供され、Webサービスには引き続き認証済みのアクセスが必要になります。