問題
- サーバー ログには、次のようなスタック トレースを含む多くの警告が表示されます。
2021-03-05 07:10:40.666 WARN [http-nio-127.0.0.1-8080-exec-276][PortalImpl:6843] java.lang.SecurityException: Access denied to com.liferay.document.library.kernel.service.DLAppService#ge
tFileEntryByUuidAndGroupId
java.lang.SecurityException: Access denied to com.liferay.document.library.kernel.service.DLAppService#getFileEntryByUuidAndGroupId
at com.liferay.portal.security.service.access.policy.internal.SAPAccessControlPolicy.checkAccess(SAPAccessControlPolicy.java:113)
at com.liferay.portal.security.service.access.policy.internal.SAPAccessControlPolicy.onServiceRemoteAccess(SAPAccessControlPolicy.java:81)
at com.liferay.portal.security.access.control.AccessControlAdvisorImpl.accept(AccessControlAdvisorImpl.java:49)
at com.liferay.portal.security.access.control.AccessControlAdvice.before(AccessControlAdvice.java:54)
at com.liferay.portal.kernel.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:53)
at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)
at com.sun.proxy.$Proxy200.getFileEntryByUuidAndGroupId(Unknown Source)
at com.liferay.document.library.kernel.service.DLAppServiceUtil.getFileEntryByUuidAndGroupId(DLAppServiceUtil.java:899)
at com.liferay.portal.webserver.WebServerServlet.getFileEntry(WebServerServlet.java:456)
at com.liferay.portal.webserver.WebServerServlet._checkResourcePermission(WebServerServlet.java:1488)
at com.liferay.portal.webserver.WebServerServlet.service(WebServerServlet.java:278)
2021-03-01 05:03:41.557 WARN [http-nio-127.0.0.1-8080-exec-302][PortalImpl:6843] java.lang.SecurityException: Access denied to com.liferay.document.library.kernel.service.DLAppService#getFileEntry
java.lang.SecurityException: Access denied to com.liferay.document.library.kernel.service.DLAppService#getFileEntry
at com.liferay.portal.security.service.access.policy.internal.SAPAccessControlPolicy.checkAccess(SAPAccessControlPolicy.java:113)
at com.liferay.portal.security.service.access.policy.internal.SAPAccessControlPolicy.onServiceRemoteAccess(SAPAccessControlPolicy.java:81)
at com.liferay.portal.security.access.control.AccessControlAdvisorImpl.accept(AccessControlAdvisorImpl.java:49)
at com.liferay.portal.security.access.control.AccessControlAdvice.before(AccessControlAdvice.java:54)
at com.liferay.portal.kernel.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:53)
at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)
at com.sun.proxy.$Proxy194.getFileEntry(Unknown Source)
at com.liferay.document.library.kernel.service.DLAppServiceUtil.getFileEntry(DLAppServiceUtil.java:884)
at com.liferay.portal.webserver.WebServerServlet.getFileEntry(WebServerServlet.java:449)
at com.liferay.portal.webserver.WebServerServlet._checkResourcePermission(WebServerServlet.java:1488)
at com.liferay.portal.webserver.WebServerServlet.service(WebServerServlet.java:278)
環境
- DXP 7.2、フィックスパック 1 以降
解決策
- これらの警告は、7.2 dxp-1 (https://issues.liferay.com/browse/LPS-95290) で行われた意図的な変更により、現在ログに記録されています。
- たとえば、ゲスト ユーザーがリモート API を介してサード パーティ プログラム (MS Word で PDF ファイルを開くなど) から Liferay ドキュメントにアクセスしようとすると、ログに記録できます。
-
コントロール パネル/構成/サービス アクセス ポリシーに移動し、
OAUTH2_everything.read.documents.downloadの行を探します。
Enabled が Yes に設定され、Default が Yes に設定されていることを確認します (これにより、ゲスト アクセスも許可されます。Default がオンになっている場合、サービス アクセス ポリシーは認証された要求と認証されていない要求の両方に適用されるため、すべての着信要求に適用されます。 認証されていないリクエストを作成する ドキュメントは、それが何をしているのかについてより良い説明を提供します: ゲスト アクセス用の API を開きます。 したがって、SAP デフォルトを作成するということは、SAP レベルでのゲスト アクセス制限がないことを意味します (ただし、もちろん、サービス レベルでの権限チェックはアクティブなままです)
- 別の可能な解決策は、これらのサービス エンドポイントに対して新しいサービス アクセス ポリシーを作成することです。 現在のサービス アクセス ポリシーは、UI の コントロール パネル > 構成 > サービス アクセス ポリシーで確認できます。 (詳細については、 アクセス ポリシー フレームワークを参照してください)。