Consuming APIs
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

認証されていないリクエストを行う

デフォルトでは、Liferay DXP はセキュリティ上の理由から API アクセスを制限しており、有効な応答を取得するには認証が必要です。 ただし、場合によっては、ゲストアクセス用のAPIを開くことがよい場合があります。

資格情報を渡さずに API リクエストを行うと、通常はエラー応答が返されます。 access.control.sanitize.security.exception ポータル プロパティfalseに設定されている場合、エラーには次のメッセージが含まれます。

curl localhost:8080/o/headless-admin-user/v1.0/sites/20122
{
   "message" : "Access denied to com.liferay.headless.admin.user.internal.resource.v1_0.SiteResourceImpl#getSite"
}
ヒント

開発環境の外部では、 access.control.sanitize.security.exception を false に変更しないでください。そうしないと、認証されていないユーザーには不要な API の詳細が表示されなくなります。 com.liferay.portal.security.access.control.AccessControlAdvisorImpl ログレベルDEBUG に設定しても、このメッセージが有効になります。

認証情報なしでAPIにアクセスする必要がある場合は、サービス・アクセス・ポリシーを介して無制限のアクセスを許可します。

サービス・アクセス・ポリシーによるAPI制限の緩和

サービス アクセス ポリシー を使用して、API アクセスを詳細なレベルで定義できます。

  1. ブラウザで http://localhost:8080にアクセスします。

  2. デフォルトの認証情報を使用してサインインします。

    ユーザー名: test@liferay.com パスワード: test

  3. グローバル メニュー (Global Menu) → コントロール パネル → セキュリティ → サービス アクセス ポリシーに移動します。

  4. 追加 (add) をクリックします。

  5. ポリシーにわかりやすい名前を付けます。 「SITE_API_GUEST_ACCESS」などのようにするとよいでしょう。

  6. [Enabled]に切り替えて、ポリシーを有効にします。

  7. [デフォルト]というラベルの付いたトグルを切り替えて、認証されていないリクエストと認証されているリクエストにポリシーを適用します。

  8. ポリシーにローカライズされたタイトルをつけます(例:ゲストにサイトAPIへのアクセスを許可する

  9. 下部にある[詳細モードに切り替え]をクリックします。

  10. 上のエラーメッセージからメソッドシグネチャをコピー&ペーストします:com.liferay.headless.admin.user.internal.resource.v1_0.SiteResourceImpl#getSite

  11. [保存]をクリックします。

ポリシーでは、Liferay の内部サービス層クラスではなく、Liferay の外部ヘッドレス API クラスを使用するようにしてください。

サービス・アクセス・ポリシーは、APIへのアクセスのルールを定義します。

これでサービス・アクセス・ポリシーが有効になり、ゲストにサイトAPIへのアクセスが許可されます。

アクセスの確認

サービス・アクセス・ポリシーの変更が適用されたため、以前は失敗したAPI呼び出しが成功します。

curl localhost:8080/o/headless-admin-user/v1.0/sites/20122
{
   "availableLanguages" : [ "en-US" ],
   "description" : "",
   "friendlyUrlPath" : "/guest",
   "id" : 20122,
   "key" : "Guest",
   "membershipType" : "open",
   "name" : "Guest",
   "parentSiteId" : 0,
   "sites" : [ ]
}

このパターンを適用して、ヘッドレスREST APIへのアクセスを開くことができます。 サービス・アクセス・ポリシーの柔軟性を活用して、必要に応じて詳細な設定が可能です。

重要

すべてのAPIが単一のエンドポイントに統合されているため、サービス・アクセス・ポリシーでは、ヘッドレスREST APIほど簡単にGraphQL APIを区別できません。 したがって、このように GraphQL アクセスを開くことは場合によっては機能するかもしれませんが、誤って多くのデータへのアクセスを許可してしまう可能性があるため、通常は推奨されません。