OAuth2アプリケーションの作成
OAuth 2.0を使用して認証を行うことができるアプリケーションがある場合、Liferayがそれを認識できるように、そのアプリケーションを登録する必要があります。
-
グローバルメニュー (
) を開き、 コントロールパネル → セキュリティ → OAuth 2 管理 に移動します。ここでは、既存のOAuth 2アプリケーションの一覧(存在する場合)を表示できます。
-
[新規]をクリックします。
-
フォームに記入してください(下記の説明)。
-
[保存]をクリックしてアプリケーションを保存します。

これにより、アプリケーションがOAuth 2アプリのリストに追加され、編集モードで開きます。 OAuth 2管理ページに戻ると、保存したアプリが新しいエントリとして表示されます。 アプリの表示、編集、または削除を行うには、 アクション (
)をクリックしてください。
アプリに認証が設定されたら、 アクション (
)をクリックして 認証の取り消しを選択することで、すべての認証を一度に取り消すこともできます。
次に、必要な情報を入力し、アプリケーションがアクセスできるデータの範囲を定義する必要があります。
OAuth2 管理リファレンス
名前: アプリケーションに分かりやすいタイトルを付けてください。
ウェブサイト URL: アプリケーションのウェブサイトへのリンクを追加します。
コールバック URI: ユーザーがアカウントへのアクセスを承認(または拒否)した後にリダイレクトされる URI を少なくとも 1 つ (改行で区切って) 入力します。 これは、サポートする許可された認証タイプ(下記参照)に対応するハンドラーにリンクする必要があります。
プライバシーポリシーのURL: アプリケーションのプライバシーポリシーページへのリンクを入力してください。
クライアント認証方法: 次のいずれかを選択してください。 なし、 クライアントシークレット基本またはポスト、 クライアントシークレット JWT、および プライベートキー JWT。
JSON Web Key セット: 上記のドロップダウンでクライアント認証方法として プライベートキー JWT を選択した場合は、アプリケーションの公開 JWKS を貼り付ける必要があります。 他の認証方法を選択する場合は、この欄を空欄のままにしてください。
クライアントプロファイル: そのプロファイルに適した (セキュアな) 認証タイプをフィルタリングするテンプレートを選択します。 例えば、アプリケーションが Web アプリケーションの場合は、 Web アプリケーションを選択すると、次の認証タイプが利用可能になり、自動的に選択されます: 認証コード、クライアント資格情報、JWT ベアラー、リフレッシュ トークン、およびリソース オーナー パスワード資格情報。 これらは、 OAuth2 RFC 6749 標準文書 に記載されている OAuth 2 の「フロー」です。 承認タイプを手動で選択する場合は、[Other]を選択します。
許可される認証タイプ: アプリケーションがサポートする定義済みの OAuth 2 プロトコルフロー を選択してください。 上記の各種クライアントプロファイルには、いくつかの一般的な組み合わせが定義されています。
クライアント認証ユーザー: クライアント認証情報の認証タイプに認証情報を使用する必要があるユーザーを選択します。 これは、クライアント認証情報による認証タイプの場合にのみ適用されます。
信頼できるアプリケーション: 認可コードおよび PKCE 拡張認可コード フローの場合、このボックスをオンにすると、ユーザーが許可する必要なく、アクセス トークンに自動的に同意します。
デバイスを記憶する: 認証コードおよび PKCE 拡張認証コード フローの場合、このボックスをオンにすると、アクセス トークンの有効期限が切れたときに、ユーザーが選択したデバイスで自動的にアクセスを許可できるようになります。
フォームを保存すると、追加のフィールドが表示された状態で再び表示されます。
クライアントID:これはシステムによって生成されます。これはアプリケーションの識別子なので、DXPはユーザーデータへのアクセスを許可されているアプリケーションを認識します。
クライアントシークレット: 編集 → 新しいシークレットを生成 をクリックしてクライアントシークレットを生成します。 秘密鍵は、認証プロセス中にクライアントを識別するために使用されます(上記の図1を参照)。 一部のクライアントプロファイルは秘密を保持できないため、すべてのクライアントプロファイルがクライアントシークレットを必要とするわけではありません。 このような場合に、前述のPKCEコードチャレンジと検証ツールが必要になります。
アイコン: アプリケーションのユーザーがアプリケーションと関連付けるアイコンをアップロードしてください。 これは認証画面に表示されます。
プライバシーポリシーのURL: アプリケーションのプライバシーポリシーへのリンクを追加してください。
トークン イントロスペクション:DXPからリクエストすることで、アプリケーションがトークンからメタデータを取得できるようにします。 これはRFC7662を実装している。
スコープの設定
必要なアプリ情報を入力した後、アプリがアクセスできるデータの範囲を定義する必要があります。 設定するには、「スコープ」タブに移動してください。
「スコープ」タブには、完全修飾名で表されたLiferayデータの包括的なリストが含まれています。 アクセスの種類は3つ定義できます。
- 既読
- 書き込み
- すべて
エンティティを選択し、スコープを決定するためのチェックボックスをオンにして、 保存 をクリックします。
認可
「承認」タブには、Liferayがアプリに対して承認した承認の一覧が表示されます。 個々の承認を削除するには、 取り消し をクリックするか、OAuth 2 管理ページに戻ってアプリの 承認の取り消し オプションを使用してすべての承認を削除できます。
クライアントIDをリモートで取得する
Liferay DXP 7.4 U55+/GA55+
Liferayは、OAuth 2アプリケーションの外部参照コードを使用して、そのクライアントIDを取得するためのエンドポイントを提供します。 UI から作成されたアプリケーションには外部参照コードは表示されませんが、次の SQL コマンドを使用してデータベースから取得できます。 [YOUR_APP_NAME] を、ご使用の OAuth 2 アプリケーションの名前に置き換えてください。
SELECT EXTERNALREFERENCECODE FROM OAUTH2APPLICATION WHERE NAME LIKE '[YOUR_APP_NAME]';
次に、以下のcURLコマンドで外部参照コードを使用して、アプリのクライアントIDを取得します。
curl \
-G \
--data-raw 'externalReferenceCode=[OAUTH_APP_ERC]' \
http://{hostname}/o/oauth2/application
[OAUTH_APP_ERC] を、ご使用の OAuth 2 アプリケーションの外部参照コードに置き換えてください。
API を介して OAuth 2 アプリケーションを作成する場合、使用する外部参照コードを指定できます。 例えば、以前に userAccountScreenName が liferayのユーザーを作成していた場合、 client-extension.yaml ファイルで ERC を宣言できます。
my-oauth-headless-server:
type: oAuthApplicationHeadlessServer
userAccountScreenName: liferay