プライマリ・コンテンツに移動

Oracle® Application Express APIリファレンス リリース5.1 E85937-02 |
| 目次 | 索引

前 | 次 |

# 32.1 認証

RESTは、管理RESTサービスにアクセスする前に認証が必要です。まず、Oracle Application Expressインスタンス管理者が、Oracle Application Expressアプリケーションにログインし、RESTクライアントを登録する必要があります。

クライアントがインスタンス管理にすでに登録されている場合は、ダイアログに`クライアントID`と`クライアント・シークレット`が表示されるので、クライアントはそれを使用して、OAuth2 `Client Credentials`フローに続く認証を実行できます。まずクライアントは、資格証明として`クライアントID`と`クライアント・シークレット`を使用して接続します。認証に成功すると、サーバーから`OAuthアクセス・トークン`が返されます。このアクセス・トークンを使用して、クライアントは管理RESTサービスにアクセスできます。

HTTPリクエスト構文のパラメータ

表32-1 HTTP Request構文

パラメータ | 説明
--- | ---
HTTPメソッド | `POST`
URL | `http://application-express-host:port/ords/apex_instance_admin_user/oauth/token`
リクエスト・ボディ | `grant_type=client_credentials`
HTTPリクエスト・ヘッダー | `"Content-Type": "application/x-www-form-urlencoded" "Authorization": Client-ID:Client Secret in Base64-encoded form`

戻り値

認証に成功すると、次の構造でJSONオブジェクトを戻します。

    {
      "access_token": OAuth access token fot subsequent requests,
      "token_type":   "bearer",
      "expires_in":   lifetime of the OAuth token, in seconds; typically "3600"
    }

認証が成功しない場合、サーバーからは`HTTP-401:Unauthorized`が戻されます。

例

次の例では、`ClientID`がクライアントIDを表し、`ClientSecret`がクライアント・シークレットを表しています。

例1

この例では、コマンドライン・ユーティリティ`curl`を実行すると、次の出力が表示されます。

       $ curl -i
              --user ClientId:ClientSecret
              --data "grant_type=client_credentials"
              http://application-express-host:port/ords/apex_instance_admin_user/oauth/token

       HTTP/1.1 200 OK
       Content-Type: application/json
       Transfer-Encoding: chunked

       "access_token":"LfXJilIBdzj5JPRn4xb5QQ..","token_type":"bearer","expires_in":3600

JSONパーサーを使用して`access_token`属性の値を取得し、それを後続のリクエストで使用します。

例2

この例では、他のApplication Expressインスタンスで`APEX_WEB_SERVICE`を使用したとき、次の出力が表示されます。

      begin
           apex_web_service.oauth_authenticate(
               p_token_url =>     'http://application-express-host:port/ords/apex_instance_admin_user/oauth/token',
               p_client_id =>     'ClientId',
               p_client_secret => 'ClientSecret'
           );
           dbms_output.put_line( 'The token is: ' || apex_web_service.oauth_get_last_token );
       end;
       /

       The token is: LfXJilIBdzj5JPRn4xb5QQ..

取得したOAuthアクセス・トークンで、管理RESTサービスをコールできます。

参照:

Oracle Application Express管理ガイド