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

デフォルトで有効になっているサービスアクセスポリシーは18個あります。これらのうち11件はシステム関連のものです。
| サービスアクセスポリシー | 説明 | デフォルトで有効 |
|---|---|---|
| 資産カテゴリデフォルト | カテゴリ検索が可能になります。 | ✔ |
| アセットエントリデフォルト | アセットが取得された際に、アセットの閲覧カウンターを更新できるようにします。 | ✔ |
| アセットタグデフォルト | タグによる検索が可能になります。 | ✔ |
| 認証済み_OAUTH2_SAP | OAuth 2によって承認されたすべてのRESTリクエストを許可します。 | ✔ |
| カレンダー_デフォルト | カレンダーに掲載されている公開イベントを検索できるようになります。 | ✔ |
| CAPTCHA_DEFAULT | 認証なしのリクエストでヘッドレスCAPTCHA APIにアクセスできるようにします。 | ✔ |
| コマースデフォルト | コマースサービスのすべてのAPIにアクセスできるようになります。カレンダー。 | ✔ |
| オブジェクトデフォルト | オブジェクトエントリのすべてのAPIにアクセスできるようになります。 | ✔ |
| 検索候補 | 国/地域サービスへのアクセスを可能にし、ユーザーがその場で言語を切り替えることができるようにします。認証されていないリクエストを含む、すべてのリクエストに適用されます。 | ✔ |
| システムデフォルト | 国/地域サービスへのアクセスを可能にし、ユーザーがその場で言語を切り替えることができるようにします。認証されていないリクエストを含む、すべてのリクエストに適用されます。 | ✔ |
| システムユーザーパスワード | 任意のメソッドの呼び出しを可能にします。もちろん、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プロパティを使用して、代わりに自分のポリシーを使用するように指定できます。
サービスアクセス ポリシーの作成
-
グローバルメニュー (
) を開き、セキュリティの下にある コントロール パネル → サービス アクセス ポリシー に移動します。 -
新規 をクリックしてください。
-
保険契約に名前を付けましょう。
-
有効 トグルを切り替えて、ポリシーを有効にします。
-
(オプション)認証されていないリクエストと認証済みのリクエストの両方にポリシーを適用する場合は、 を切り替え、デフォルトは とします。
-
ポリシーに地域に合わせたタイトルを付けましょう。
-
「許可されたサービス署名」に、インストールされているサービス クラスの完全修飾名を入力します。
-
メソッド名の下に、サービスメソッドの呼び出しを入力します。
注記コード補完は、
サービス クラスとメソッド名フィールドの両方で使用できます。 -
別のサービスまたは方法を指定するには、プラスアイコンをクリックして項目を追加してください。
-
完了したら、 保存 をクリックします。
メソッドのシグネチャを事前にすべて把握している場合は、 をクリックして詳細モードに切り替え、 をクリックして、それらをすべて 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 サービスに対して認証されたアクセスを依然として必要とするフォールバックを提供します。