問題
- Liferayを使ってカスタムリモートサービスを書こうとしています。
環境
- Liferay DXP 7.4
解像度
-
Liferayには、Liferay PortalのAPIをリモートから呼び出す際に、一元的かつ拡張可能な方法で認証を行う認証ベリファイアがあります。 彼らには主に2つの責任がある:
- 登録された
AuthVerifier
インスタンスを使用して、提供された認証情報を検証する。 - 検証結果に基づいてポータル認証コンテキストを作成
さらに、、Liferay には OAuth2 を作成するためのドキュメントがあります。 creating-oauth2-applications
OAuth 2.0は認可プロトコルであり、認証プロトコルではありません。 そのため、主にリモートAPIやユーザーデータなど、一連のリソースへのアクセスを許可する手段として設計されている。
OAuth 2.0は、同意されたアクセスを提供し、ユーザーの認証情報を共有することなく、ユーザーに代わってクライアントアプリがリソースに対して実行できるアクションを制限します。
- 登録された
1. DXPサーバーを起動。
2. コントロールパネルの「OAuth2管理」に移動。
3. OAuth2アプリケーションを追加しました。
Name: OAuth2
Website URL: http://localhost:8080/
Callback URIs: http://localhost:8080/
Client Authentication Method: Client Secret Post
Client Profile: Headless Server
4. 保存をクリックする。
5. Scopeに移動し、すべての「Portal Services」にチェックを入れる。
6. 以下のCURLコマンドを実行して、'Test'ユーザーのトークンを生成した:
curl -X POST --header "Content-Type: application/x-www-form-urlencoded" "localhost:8080/o/oauth2/token?grant_type=client_credentials&client_id={test-app-clientId}&client_secret={test-app-clientSecret}"
7. 次のようなレスポンスが返ってくるはずだ: {"accesstoken": "c625a7972685aeaf03d721cceeac11e8f917d73df5742f7a61b10278dd7c2c8", "tokentype": "Bearer", "expires_in":600, "scope": "liferay-json-web-services.everything.read.userprofile liferay-json-web-services.everything.write liferay-json-web-services.analytics.read liferay-json-web-services.analytics.write liferay-json-web-services.everything.read liferay-json-web-services.everything liferay-json-web-services.everything.read.documents.download"}.
トークンを受け取ったら、 Postman経由で任意のヘッドレスAPIでテストできる。
追加情報
- ウェブ・サービスのセキュリティ確保に関する詳細は、 securing-web-servicesを参照のこと。
- oauth2によるユーザー認証
- oauth2-scopes
- oauth2アプリケーションの作成