40.1 認証
RESTは、管理RESTサービスにアクセスする前に認証が必要です。まず、Oracle Application Expressインスタンス管理者が、Oracle Application Expressアプリケーションにログインし、RESTクライアントを登録する必要があります。
クライアントがインスタンス管理にすでに登録されている場合は、ダイアログにクライアントID
とクライアント・シークレット
が表示されるので、クライアントはそれを使用して、OAuth2 Client Credentials
フローに続く認証を実行できます。まずクライアントは、資格証明としてクライアントID
とクライアント・シークレット
を使用して接続します。認証に成功すると、サーバーからOAuthアクセス・トークン
が返されます。このアクセス・トークンを使用して、クライアントは管理RESTサービスにアクセスできます。
HTTPリクエスト構文のパラメータ
表40-1 HTTP Request構文
パラメータ | 説明 |
---|---|
HTTPメソッド |
|
URL |
|
リクエスト・ボディ |
|
HTTPリクエスト・ヘッダー |
|
戻り値
認証に成功すると、次の構造で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サービスをコールできます。
親トピック: REST管理インタフェースAPIの使用