oo

OAuth 2のスコープ

OAuth 2.0では、アプリケーションはユーザーデータの制限されたサブセットへのアクセスを許可されます。 これらは スコープ と呼ばれます(Liferayスコープと混同しないでください)。 これらは2つの方法で作成されます。

  • 管理者が、スコープのサービスアクセスポリシーを作成する。

  • 開発者が、JAX-RSエンドポイントを作成する。 デフォルトでは、スコープはJAX-RSエンドポイントでサポートされるHTTP動詞に基づいて生成されます。 特殊なアノテーションは、この動作をオーバーライドし、特定のスコープを登録します。

JSONWSサービスのスコープの作成

スコープを作成する最も一般的な方法は、OAUTH2_という名前のプレフィックスが付いたサービス・アクセス・ポリシーを作成することです。 この命名規則により、ポリシーはOAuthアプリケーションの設定画面にスコープとして表示されます。

たとえば、アプリケーションがメールアドレスを取得するためにユーザーのプロファイル情報にアクセスする必要があるとします。 アプリケーションにアクセスを許可するには、 [コントロールパネル] → [セキュリティ] → [サービス・アクセス・ポリシー] に移動し、次の図に示すポリシーを作成します。

サービス・アクセス・ポリシーは、OAuth 2.0アプリケーションのスコープを定義します。

このポリシーはデフォルトのポリシーではなく、UserServiceの1つのメソッドにのみアクセス権を付与することに注意してください。 これは、サービスビルダーによって生成されたJSONWS Webサービスです。 次のURLで、インストールで使用可能なすべてのサービスのリストを表示できます。

http://[host]:[port]/api/jsonws/

ポリシーを作成し、OAUTH2_プレフィックスを使用して名前を付けると、OAuth2管理の [Scopes] タブに表示されます。

適切なプレフィックスを使用して名前が付けられたスコープが、アプリケーション設定の[Scopes]タブに表示されます。

これを選択して、アプリケーションを保存できます。

認証ページの作成

このステップはオプションです。 ユーザーは自分のアカウントへのアクセスを承認するためのインターフェイスを必要とし、1つは自動的に提供されます。 ただし、ページをカスタマイズする場合は、サイトに認証ページを作成できます。

  1. Global Menu(Global Menu) を開き、 Control Panel タブをクリックし、 Instance SettingsSecurityOAuth 2Authorize Screen を開く。

    この画面では、Authorize Screen の URL フィールドをこのデフォルト値で表示します。 /?p_p_id=com_liferay_oauth2_provider_web_internal_portlet_OAuth2AuthorizePortlet&p_p_state=maximized. 内部ポートレットに相当します。

    OAuth 2 Authorize 画面を設定します。

  2. 認証画面に必要なURL(例: /authorize)を設定します。

  3. 目的のサイトに移動し、 Site Menu(Site Menu) を開き、 Site Builder を展開し、 Pages をクリックします。

  4. コレクションサイドバーの隣にある [Add] ボタン(追加ボタン) ボタンを押して、 ページ を選択します。

    note

    Liferay DXP 7.3 以前の場合、Private Page を作成します。 プライベートページには、認証されたユーザーのみがアクセスできます。

  5. Full Page Application] タイプを選択します。

  6. ステップ2で設定したのと同じ名前をページに付けます。

  7. ナビゲーションメニューウィジェットに表示しない] のスイッチをONにします。 このページをサイトのナビゲーションに表示させないためです。

  8. 次に表示されるページで、フレンドリURLがステップ2で設定したURLと一致することを確認します。

  9. フルページアプリケーション] の下で、 [アプリケーションの認証リクエスト] を選択します。

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

ユーザーは、デフォルトまたはカスタムUIを使用して、認証プロセスを実行できます。 UIを作成し、スコープについて理解したので、次にアプリケーションでの認証プロセスを作成します。

Capability: