ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちら までご連絡ください。
問題
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サンプルモジュールに変更はありません。
注:要件に従って、以下のことを確認してください。
サービスエンドポイント、認証に表示されるサービス、プロパティは、さらに構成するために必要な場合があります。
参照:
問題を再現するための手順
サーバーを起動し、管理者認証でログインします。
サンプルのレストプラグインをデプロイする
JAX-RSのWebサービスに対する認証
OAuth 2認証です:
コントロールパネル → 設定 → OAuth2 Administration に移動します。
プラスアイコンをクリックし、説明的な名前を使用してアプリケーションを追加します。
例えば、以下のような感じです: Client Credentials 認証タイプを自動選択する「Headless Server profile」テンプレートを選択します。
注:この作成したアプリケーションから 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形式で以下のように生成されます。
{"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サービスが呼び出され、リクエストに応答しています。