認証されたリクエストの実行

認証されたリクエストを実行するには、特定のユーザーとして認証する必要があります。

Web APIを呼び出すときに使用できる認証メカニズムには、以下の2つがあります。

**Basic認証:**ユーザー資格情報をエンコードされたユーザー名とパスワードのペアとして送信します。これは、最も簡潔な認証プロトコルです(HTTP / 1.0以降で使用可能)。

**OAuth 2.0:**Liferay DXP 7.1では、認証にOAuth 2.0を使用できます。詳細については、 OAuth 2.0 documentationを参照してください。

ここでは、まず最初に、Basic認証を使用したリクエストの送信方法について説明します。

Basic認証

Basic認証では、エンコードされたユーザー名とパスワードを含むHTTPのAuthorizationヘッダーを送信する必要があります。最初に、エンコードされた値を取得する必要があります。取得には、opensslまたはBase64エンコーダーが使用できます。いずれにしても、user:password文字列をエンコードする必要があります。以下は、test@liferay.comというユーザーのuser:password文字列をLiferayというパスワードでエンコードするためのopensslコマンドの例です。

openssl base64 <<< test@liferay.com:Liferay

これにより、以下のエンコードされた値が返されます。

dGVzdEBsaWZlcmF5LmNvbTpMaWZlcmF5Cg==

opensslをインストールしていない場合は、以下のbase64コマンドを試してください。

base64 <<< test@liferay.com:Liferay

リクエストを送信するときは、HTTP Authorizationヘッダーのエンコードされた値を使用します。

curl -H "Authorization: Basic dGVzdEBsaWZlcmF5LmNvbTpMaWZlcmF5Cg==" http://localhost:8080/o/headless-delivery/v1.0/sites/{siteId}/blog-postings/

応答には、認証されていないリクエストが受信する403エラーの代わりに、データが含まれます。応答の構造の詳細については、Working with Collections of Dataを参照してください 。

{
  "items": [
    {
      "alternativeHeadline": "The power of OpenAPI & Liferay",
      "articleBody": "<p>We are happy to announce...</p>",
      "creator": {
        "familyName": "Test",
        "givenName": "Test",
        "id": 20130,
        "name": "Test Test",
        "profileURL": "/web/test"
      },
      "dateCreated": "2019-04-22T07:04:47Z",
      "dateModified": "2019-04-22T07:04:51Z",
      "datePublished": "2019-04-22T07:02:00Z",
      "encodingFormat": "text/html",
      "friendlyUrlPath": "new-headless-apis",
      "headline": "New Headless APIs",
      "id": 59301,
      "numberOfComments": 0,
      "siteId": 20124
    },
    {
      "alternativeHeadline": "How to work with OAuth",
      "articleBody": "<p>To configure OAuth...</p>",
      "creator": {
        "familyName": "Test",
        "givenName": "Test",
        "id": 20130,
        "name": "Test Test",
        "profileURL": "/web/test"
      },
      "dateCreated": "2019-04-22T09:35:09Z",
      "dateModified": "2019-04-22T09:35:09Z",
      "datePublished": "2019-04-22T09:34:00Z",
      "encodingFormat": "text/html",
      "friendlyUrlPath": "authenticated-requests",
      "headline": "Authenticated requests",
      "id": 59309,
      "numberOfComments": 0,
      "siteId": 20124
    }
  ],
  "lastPage": 1,
  "page": 1,
  "pageSize": 20,
  "totalCount": 2
}

OAuth 2.0認証

Liferay DXP 7.1は、トークンベースの認証メカニズムであるOAuth 2.0による承認をサポートしています。詳細については、Liferay DXP’s OAuth 2.0 documentationを参照してください。 以下のセクションでは、OAuth 2.0を使用してWeb APIのリクエストを認証する方法を解説します。

OAuth 2.0トークンの取得

OAuth 2.0を使用してWeb APIを呼び出す前に、使用するアプリケーション(Web APIの利用者)を承認済みOAuthクライアントとして登録する必要があります。これを行うには、OAuth 2.0のドキュメンテーションにあるCreating an Applicationのセクションの指示に従ってください。アプリケーションを作成する際、以下の内容をフォームに入力します。

Application Name: アプリケーションの名前。

Client Profile: ヘッドレスサーバー。

Allowed Authorization Types: クライアント資格情報を確認します。

*[保存]*をクリックしてアプリケーションの作成が完了したら、フォームの上部に表示される[クライアントID]と[クライアントシークレット]の値を書き留めます。

次に、OAuth 2.0のアクセストークンを取得する必要があります。これを行うには、Authorizing Account Access with OAuth 2のチュートリアルを参照してください。

OAuth 2.0トークンを使用してサービスを呼び出す

有効なOAuth 2.0トークンを取得したら、それをリクエストのAuthorizationヘッダーに含め 、認証タイプがbearer tokenであることを指定します。 以下に例を示します。

curl -H "Authorization: Bearer d5571ff781dc555415c478872f0755c773fa159" http://localhost:8080/o/headless-delivery/v1.0/sites/{siteId}/blog-postings/

応答には、Basic認証からの応答と同様に、認証されたユーザーがアクセス権限を持っているリソースが含まれます。

認証されていないリクエストの実行

Liferay DXPのヘッドレスREST APIでは、認証されていないリクエストはデフォルトで無効になっています。ただし、以下の手順に従うと、マニュアルで有効にすることができます。

  1. com.liferay.headless.delivery.internal.jaxrs.application.HeadlessDeliveryApplication-default.configという設定ファイルを作成し、以下のコードを追加します。
oauth2.scopechecker.type="none"
auth.verifier.auth.verifier.BasicAuthHeaderAuthVerifier.urls.includes="*"
auth.verifier.auth.verifier.OAuth2RestAuthVerifier.urls.includes="*"
auth.verifier.guest.allowed="true"
最後のプロパティ( `auth.verifier.guest.allowed`)により、ゲスト

はAPIを介して 公開コンテンツにアクセスできることに注意してください。これをオフにするには、プロパティを falseに設定します。

  1. 設定ファイルを[Liferay Home]/osgi/configsにデプロイします。通常、Liferay Homeは、 アプリケーションサーバーの親フォルダであることに注意してください。

  2. OpenAPIプロファイルのURLに以下のリクエストを送信して、APIをテストします。

curl "http://localhost:8080/o/headless-delivery/v1.0/openapi.yaml"

リクエストを送信したAPIのOpenAPIプロファイルが取得されるはずです。

関連トピック

Get Started: Invoke a Service

Working with Collections of Data

« はじめに:サービスの呼び出しデータコレクションの操作 »
この記事は役に立ちましたか?
1人中0人がこの記事が役に立ったと言っています