legacy-knowledge-base
公開されました Sep. 10, 2025

レストAPIのXML形式で、ブラウザにAccess deniedのエラーメッセージが投げられる

written-by

Thanga Meena

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

  • HTTPヘッダーで認可を受け、URL http://localhost:8080/o/greetings/morningにアクセスすると、ウェブサービスはブラウザに以下のエラーメッセージ [XML 形式] でリクエストに応答します。
<Forbidden><message>Access denied to sample.rest.application.Samplexxxx#working</message></Forbidden>
  • レストAPIを作成する手順
    • このヘルプセンターの記事に従って、 レストモジュール API を作成してください
    • 今回は、 @Component アノテーションの設定プロパティ以外は、JAX-RSサンプルモジュールに変更はありません。
    • 注:要件に従って、以下のことを確認してください。
      • サービスエンドポイント、認証に表示されるサービス、プロパティは、さらに構成するために必要な場合があります。
    • 参照:
      • Rest_module.gif
  • 問題を再現するための手順
    • サーバーを起動し、管理者認証でログインします。
    • サンプルのレストプラグインをデプロイする
    • JAX-RSのWebサービスに対する認証
      • OAuth 2認証です:
        • コントロールパネル → 設定 → OAuth2 Administration に移動します。
        • プラスアイコンをクリックし、説明的な名前を使用してアプリケーションを追加します。
        • 例えば、以下のような感じです: Client Credentials 認証タイプを自動選択する「Headless Server profile」テンプレートを選択します。

oauth.PNG

        • 注:この作成したアプリケーションから Client ID と Client Secret をコピーし、これらを使用して Web サービスに認証します。
      • この例では、 の curl ツールを使用して、 OAuth トークン をリクエストしています。
      • アプリケーションのclient_idとclient_secretを指定して、以下のコマンドを実行します。
curl http://localhost:8080/o/oauth2/token -d 'grant_type=client_credentials&client_id=id-XXXXXXXXXXXXXXXX&client_secret=secret-XXXXXXXXXXXXXXXXXXXXXXXXX'

レスポンス-JSON.PNG

      • トークンは、JSON形式で以下のように生成されます。
{"access_token":"XXXXXXXXXXXXXXXXXXXXXXXXXX","token_type":"Bearer","expires_in":600}
      • 生成されたトークンを使って、以下のコマンドを実行し、サービスを呼び出しています。
      • 観察された動作
        HTTPヘッダで認可を受け、URL http://localhost:8080/o/greetings/morning、ウェブサービスはブラウザに以下のエラーメッセージ[XML形式]でリクエストに応答します。
<Forbidden><message>Access denied to sample.rest.application.Samplexxxx#working</message></Forbidden>

環境

  • Liferay-dxp-7.2.10-ga1 と Liferay-fix-pack-dxp-1-7210 のバンドル。
  • HSQLデータベース [Liferay DXPは、初期状態では組み込みのHSQLデータベースを使用するように設定されていますが、HSQL DBは主にデモや試用を目的としています]。

解像度

  • 以下の手順で問題を解決することができます:
    • 開発用のパブリックエンドポイントを作成します。 この例では、公共サービスの場合、 @Componentアノテーションのプロパティの下に以下の2つのプロパティを設定します。
"auth.verifier.guest.allowed=true",
"liferay.access.control.disable=true"
    • 要件に応じたエンドポイントを追加した後、プラグインを再構築し、デプロイします。
    • : 詳しくは「サービスアクセスポリシー」 をご覧ください。
  • 認可があれば、ウェブサービスを呼び出すことができ、リクエストに応答することができます。 この例では、以下のようにWebサービスが呼び出され、リクエストに応答しています。

作品紹介.jpgGood_morning.jpgwith_param.jpg

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base