4.7 RESTfulなWebサービスのセキュリティ

ロール、権限およびOAuthクライアントを定義して、RESTful Webサービスへのアクセスで認証および認可が要求されるようにします。

RESTful Webサービスを保護するには、次の操作を実行する必要があります。

  • ロールを作成する

  • 権限を作成し、ロールと保護するモジュールまたはリソースを選択する

OAUTH2ワークフローを使用して保護されたRESTfulサービスへのアクセスを有効にするには、RESTfulサービスを保護するために作成されたロールおよび権限を使用してOAuthクライアントを作成します。

次の各項では、ロール、権限およびOAuthクライアントの作成方法について説明します。

4.7.1 ロールの管理

「ロール」ページで、RESTfulサービスのロールを作成、編集および削除できます。

「ロール」ページにナビゲートするには、RESTの「概要」ページで「オブジェクト」の「ロール」をクリックするか、ヘッダーのメニューで「セキュリティ」「ロール」の順に選択します。

コンテキスト・メニューで使用できるアクションは次のとおりです。

4.7.1.1 ロールの作成

指定した名前でロールを作成します。作成したロールは、権限に関連付けることができます。

  1. 「ロール」ページで、「ロールの作成」をクリックします。
  2. 「ロール名」フィールドに、作成するロールの名前を入力します。

    コードの表示: 「ロールの作成」スライダと同等のPL/SQLコードを表示するには、このオプションを選択します。このPL/SQLコードをワークシートにコピーして実行し、「ロールの作成」スライダで「作成」をクリックしたときと同じアクションを実行できます。

  3. 「作成」をクリックします。

    新規に割り当てられた役割が「ロール」ページに表示されます。

4.7.1.2 ロールの編集

この項では、ロールの編集方法について説明します。

  1. 「ロール」ページで、特定のロールの「アクション」コンテキスト・メニュー・アイコンをクリックし、「編集」を選択します。
  2. 必要な変更を入力し、「保存」をクリックします。

    フィールドの説明は、ロールの作成を参照してください。

4.7.1.3 ロールの削除

この項では、ロールの削除方法について説明します。

  1. 「ロール」ページで、特定のロールの「アクション」コンテキスト・メニュー・アイコンをクリックし、「削除」を選択します。

    確認を求めるプロンプトが表示されます。

  2. 「はい」をクリックして削除します。

4.7.1.4 割り当てられた権限の表示

この項では、ロールに関連付けられている権限の表示方法について説明します。

「ロール」ページで、特定のロールの「アクション」コンテキスト・メニュー・アイコンをクリックし、「詳細」を選択します。ロールに割り当てられている権限が表示されます。

4.7.2 権限の管理

「権限」ページで、RESTfulサービスの権限を作成、編集および削除できます。

権限はロールのセットを定義し、認証済のユーザーのうちの少なくとも1人は、権限によって保護されたRESTfulサービスへのアクセス権を持っている必要があります。

「権限」ページにナビゲートするには、RESTの「概要」ページで「オブジェクト」の「権限」をクリックするか、ヘッダーのメニューで「セキュリティ」「権限」の順に選択します。

次の図に、カード・ビューにデフォルトで表示される権限属性を示します。

コンテキスト・メニューで使用できるアクションは次のとおりです。

4.7.2.1 権限の作成

この項では、権限の作成方法について説明します。

  1. 「権限」ページで、「権限の作成」をクリックします。
  2. 次のフィールドに入力します。アスタリスク(*)の付いたフィールドは必須です。
    • ラベル: 権限のわかりやすい名前を入力します。
    • 名前: 権限の一意の名前を入力します。
    • 説明: 権限の目的の簡単な説明を入力します。
    • コメント: コメントを入力します。
    • ロール: 権限に割り当てる1つ以上のロールを入力します。
    • 保護されたモジュール: 保護するモジュールを選択します。
    • 保護されたリソース: 「保護されたモジュール」のかわりに、「リソースの保護」タブを使用して、URIパターンに基づいてセキュリティを適用します。

    コードの表示: 「権限の作成」スライダと同等のPL/SQLコードを表示するには、このオプションを選択します。このPL/SQLコードをワークシートにコピーして実行し、「権限の作成」スライダで「作成」をクリックしたときと同じアクションを実行できます。

  3. 「作成」をクリックします。

    新しい権限が「権限」ページに表示されます。

4.7.2.2 権限の編集

この項では、権限の編集方法について説明します。

  1. 「権限」ページで、特定の権限の「アクション」コンテキスト・メニュー・アイコンをクリックし、「編集」を選択します。
  2. 必要な変更を加えてから、「保存」をクリックします。

    フィールドの説明は、権限の作成を参照してください。

4.7.2.3 権限の削除

この項では、権限の削除方法について説明します。

  1. 「権限」ページで、特定の権限の「アクション」コンテキスト・メニュー・アイコンをクリックし、「削除」を選択します。
  2. 確認を求めるプロンプトが表示されます。「はい」をクリックします。

4.7.3 OAuthクライアントの管理

OAuth 2.0ベースの認証を使用すると、特定のユーザーまたはクライアントのみがRESTful Webサービスにアクセスできるようにすることができます。

OAuth 2.0は、RESTful APIへの条件付きおよび制限付きのアクセスを提供するフローを定義する、標準のインターネット・プロトコルです。詳細は、OAuthベースの認証 を参照してください。

「OAuthクライアント」ページで、OAuthクライアントを作成、編集および削除できます。

「OAuthクライアント」ページにナビゲートするには、RESTの「概要」ページで「オブジェクト」の「クライアント」をクリックするか、ヘッダーのメニューで「セキュリティ」「OAuthクライアント」の順に選択します。

次の図に、カード・ビューにデフォルトで表示されるOAuthクライアント属性を示します。

コンテキスト・メニューで使用できるアクションは次のとおりです。

4.7.3.1 OAuthクライアントの作成

OAuthクライアントを作成し、必要なロールと権限を付与します。

  1. 「OAuthクライアント」ページで、「OAuthクライアントの作成」を選択します。
  2. 次のフィールドに入力します。アスタリスク(*)の付いたフィールドは必須です。

    「クライアント定義」タブ

    • 付与タイプ: 認可付与タイプを選択します。オプションは、Client_Cred、認証コードまたは「暗黙的」です。

      これらの付与タイプの詳細は、『Oracle REST Data Services開発者ガイド』OAuthフローを参照してください。

    • Name: クライアントの名前
    • 説明: クライアントの目的の説明。
    • リダイレクトURI: OAuthアクセス・トークンまたはエラーが含まれるリダイレクトが送信されるクライアント制御URIを入力します。
    • サポートURI: エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIを入力します。例: http:// www.myclientdomain.com/support/
    • サポート電子メール: エンド・ユーザーがサポートを得るためにクライアントに連絡できる電子メールを入力します。
    • ロゴ: JPG、BMPまたはSVGファイル形式でロゴをアップロードします。ロゴのサイズが100KB未満であることを確認します。
    • ロール: 付与するロールを選択します。
    • 許可されるオリジン: URL接頭辞のリストを追加します。
    • 権限: クライアントがアクセスを必要とする権限を選択します。

    コードの表示: 「OAuthクライアントの作成」パネルと同等のPL/SQLコードを表示するには、このオプションを選択します。このPL/SQLコードをワークシートにコピーして実行し、「OAuthクライアントの作成」パネルで「作成」をクリックしたときと同じアクションを実行できます。

  3. 「作成」をクリックします。

    登録されたOAuthクライアントが「OAuthクライアント」ページに表示されます。

    「クライアントID」およびクライアント・シークレットの値は、OAuthクライアントの機密の資格証明を表します。値を表示するには、表示/非表示表示/非表示アイコンをクリックします。

    RESTクライアントまたはcURLコマンドライン・ツールを使用して、保護されたRESTサービス・エンドポイントをテストします。

4.7.3.2 OAuthクライアントの編集

この項では、OAuthクライアントの編集方法について説明します。

  1. 「OAuthクライアント」ページで、特定のクライアントの「アクション」コンテキスト・メニュー・アイコンをクリックし、「編集」を選択します。
  2. 必要なフィールドを編集して、「保存」をクリックします。

    フィールドの説明は、OAuthクライアントの作成を参照してください。

4.7.3.3 OAuthクライアントの削除

この項では、OAuthクライアントの削除方法について説明します。

  1. 「OAuthクライアント」ページで、特定のクライアントの「アクション」コンテキスト・メニュー・アイコンをクリックし、「削除」を選択します。
  2. 確認を求めるプロンプトが表示されます。「はい」をクリックします。

4.7.3.4 OAuthクライアントのエクスポート

この項では、OAuthクライアントのエクスポート方法について説明します。

  1. 「OAuthクライアント」ページで、特定のクライアントについて「アクション」コンテキスト・メニュー・アイコンをクリックし、「エクスポート」を選択します。
  2. 「OAuthクライアント」パネルで、「コピー」アイコンまたは「ダウンロード」をクリックして、OAuthクライアント情報をコピーまたはダウンロードします。

4.7.4

この項では、異なる付与タイプを持つOAuthクライアントの作成の例をいくつか示します。

4.7.4.1 クライアント資格証明の付与タイプを使用したOAuthクライアントの作成

この項では、クライアント資格証明付与タイプを使用してOAuthクライアントの作成方法について説明します。

例: POSTハンドラを使用したレコードの挿入で作成したモジュールexampleのOAuthクライアントを作成します。RESTfulサービスのエンドポイントはhttp://xyz.us.comp.com:1234/ords/pdbdba/example/emp/です。

前提条件

HR Adminという名前のロールを作成します。ロールの作成を参照してください

Example.HRという名前の権限を作成します。権限の作成を参照してください

  1. 「OAuthクライアント」ページで、「OAuthクライアントの作成」をクリックします。
  2. 次のフィールドを入力します。
    • 「付与タイプ」フィールドで、CLIENT_CREDを選択します。
    • OAuthクライアントの「名前」、「説明」、「リダイレクトURI」、「サポートURI」および「サポート電子メール」を入力します。

    • 「ロール」タブで、作成したロール(HR Admin)を追加します。

    • 「権限」タブで、作成した権限(Example.HR)を追加します。

    • 「作成」をクリックします。

    新しいOAuthクライアント・カードが「OAuthクライアント」ページに表示されます。

  3. cURLを使用して、OAuth資格証明なしでサービス・エンドポイントをテストします。
    curl --location --request POST --header "Content-Type: application/json" 
    --data '{"DEPTNO": 55, "DEPTNAME": "Sales", "DEPTLOC": "Australia" }' 
    'http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/'

    エラーが表示されます。

  4. OAuth資格証明を使用してエンドポイントをテストします。
    1. アクセス・トークンを取得するには、OAuthクライアント・カードのコンテキスト・メニューから「Bearerトークンの取得」を選択します。

      「OAuthトークン」ダイアログが表示されます。「クリップボードにコピー」「クリップボードにコピー」アイコンを使用してトークンをコピーします。

    2. cURLで、次の文でBearerアクセス・トークンを使用してリソースをリクエストします。

      curl -H "Content-Type: application/json" -H "Authorization: Bearer AMccwlnt99gm9kxDs_w1DA" --location --request POST --data 
      '{"DEPTNO": 55, "DEPTNAME": "Sales", "DEPTLOC": "Australia"}' 'http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/'

    出力には次が表示されます。

    {"deptno":55,"dname":"Sales","loc":"Australia","links":[{"rel":"collection",
    "href":"http://xyz.us.comp.com:1234/ords/pdbdba/example/emp/"}]}
  5. 「SQL」ページで、次の文を使用してDEPT表に挿入された新しいレコードを確認できます。
    SELECT * FROM DEPT;

4.7.4.2 認証コード付与タイプを使用したOAuthクライアントの作成

この項では、認証コード付与タイプを使用したOAuthクライアントの作成方法について説明します。

  1. 「OAuthクライアント」ページで、「OAuthクライアントの作成」をクリックします。
  2. 次のフィールドを入力します。
    • 「付与タイプ」フィールドで、認証コードを選択します。
    • OAuthクライアントの「名前」「説明」「リダイレクトURI」「サポートURI」および「サポート電子メール」を入力します。

    • 「ロール」タブで、関連するロールを追加します。

    • 「権限」タブで、関連する権限を追加します。

    • 「作成」をクリックします。

    新しいOAuthクライアント・カードが「OAuthクライアント」ページに表示されます。

  3. OAuthクライアント・カードで、「アクション」アイコンをクリックし、「Authの詳細」を選択します。
    一意の値および認可URIが表示されます。
  4. 「認可URI」フィールドで、「新しいタブで開く」アイコンをクリックします。新しいウィンドウが表示され、「未認可」エラー・メッセージがサインイン・リンクとともに表示されます。
  5. 「サインイン」をクリックし、ログイン資格証明を再度入力します。
  6. 保護されたURIにアクセスするリクエストを承認するよう求められます。「承認」をクリックします。
    承認リクエスト通知