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

デフォルトでは 18 個のサービス アクセス ポリシーが有効になっています。 そのうち 11 件はシステム関連です。
| サービス・アクセス・ポリシー | 説明 | デフォルト設定で有効 |
|---|---|---|
| 資産カテゴリのデフォルト | カテゴリ別に検索できるようになります。 | ✔ |
| ASSET_ENTRY_DEFAULT | アセットが取得されたときにアセットのビューカウンターを更新できるようにします。 | ✔ |
| アセットタグのデフォルト | タグの検索が可能になります。 | ✔ |
| AUTHORIZED_OAUTH2_SAP | OAuth 2によって承認されたすべてのRESTリクエストを許可します。 | ✔ |
| CALENDAR_DEFAULT | カレンダーで公開イベントを検索できるようにします。 | ✔ |
| CAPTCHA_デフォルト | 認証されていないリクエストによるヘッドレス キャプチャ API へのアクセスを可能にします。 | ✔ |
| コマースデフォルト | すべてのコマース サービス API にアクセスできるようになります。 カレンダー. | ✔ |
| オブジェクトのデフォルト | すべてのオブジェクト エントリ API にアクセスできるようになります。 | ✔ |
| 検索候補 | 国/地域サービスへのアクセスを許可し、ユーザーが即座に言語を切り替えることができるようにします。 認証されていないリクエストを含むすべてのリクエストに適用されます。 | ✔ |
| SYSTEM_DEFAULT | 国/地域サービスへのアクセスを許可し、ユーザーが即座に言語を切り替えることができるようにします。 認証されていないリクエストを含むすべてのリクエストに適用されます。 | ✔ |
| SYSTEM_USER_PASSWORD | 任意のメソッドを呼び出すことができます。 もちろん、API関数には権限チェックが含まれているため、この呼び出しは、ユーザーが必要な権限を持っている場合にのみ機能します。 これは、AuthVerifierResult.isPasswordBasedAuthentication がtrueのリクエスト(つまりユーザー認証がパスワードを使用して行われたとき)に適用されます。 特定のAPI関数の呼び出しを完全に禁止する場合は、SYSTEM_USER_PASSWORDポリシーを*よりも制限の厳しいものに変更できます。 | ✔ |
SYSTEM_DEFAULT、および デフォルト が はい に設定されているその他のポリシーは、認証されていない要求を含むすべての受信要求に適用されます。
他の 7 つのポリシーは、OAuth および JSON Web サービス用です。
| サービス・アクセス・ポリシー | 説明 | デフォルト設定で有効 |
|---|---|---|
| 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 1または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サービスには引き続き認証済みのアクセスが必要になります。