7 OAUTH_ADMIN PL/SQLパッケージのリファレンス

OAUTH_ADMIN PL/SQLパッケージには、特権ユーザー向けの、Oracle REST Data Servicesを使用してOAuth認証を実装するためのサブプログラム(プロシージャとファンクション)が含まれています。

データベース・ユーザーは、OAUTH_ADMINパッケージを呼び出すには、ORDS_ADMINISTRATOR_ROLEデータベース・ロールを付与されている必要があります。

次の例では、ORDS_ADMINISTRATOR_ROLEロールをADMINユーザーに付与しています。

GRANT ORDS_ADMINSTRATOR_ROLE TO ADMIN;

OAUTH_ADMINパッケージは、AUTHID CURRENT_USER権限で定義され、各メソッドにp_schemaパラメータが必要であり、そのパラメータでターゲット・スキーマを指定する必要があります。

7.1 OAUTH_ADMIN.CREATE_JWT_PROFILE

形式

OAUTH_ADMIN.CREATE_JWT_PROFILE (
       p_schema       IN VARCHAR2,
       p_issuer       IN VARCHAR2,
       p_audience     IN VARCHAR2,
       p_jwk_url      IN VARCHAR2,
       p_description  IN VARCHAR2 DEFAULT NULL,
       p_allowed_skew IN NUMBER DEFAULT NULL,
       p_allowed_age  IN NUMBER DEFAULT NULL
   )

説明

指定されたスキーマのJWTプロファイルがまだ存在しない場合にそれを新規作成します。JWTプロファイルがすでに存在する場合は、まずそれを削除する必要があります。

パラメータ

p_schema

スキーマの名前です。このパラメータは必須です。

p_issuer

受入れ可能JWTアクセス・トークンの発行者。この値は、JWT内で指定されているissクレームと一致する必要があります。

p_audience

受入れ可能JWTアクセス・トークンのオーディエンス。この値は、JWTで指定されているaudクレームと一致する必要があります。

p_jwk_url

これは、受入れ可能JWTアクセス・トークンの検証に使用するJWKへのURLです。このURLは"https://"で始まる必要があります。

p_desciption

JWTプロファイルの説明です。これをnullにすることもできます。

p_allowed_skew

JWTで指定されている時間クレームに許容する時差の秒数。これは、ORDSとトークン発行者が使用するクロックが違うことによる問題を解決するために役立ちます。デフォルト値であるnullにした場合は、ORDSグローバル設定security.jwt.allowed.skewを取得することが指定されます。0以下の値にした場合は、これを無効にしたことになります。最長で60秒を指定できます。

p_allowed_age

JWTの、許容される最長経過期間(秒)。期限切れクレームであっても関係ありません。JWTの経過期間は、JWTの発行時刻クレームから導出されます。デフォルト値であるnullにした場合は、ORDSグローバル設定security.jwt.allowed.ageを取得することになります。0以下の値にした場合は、これを無効にしたことになります。

使用上のノート

操作を有効にするには、このプロシージャを呼び出した後でCOMMIT文を使用します。

次の例では、HRスキーマの既存のJWTプロファイルを削除し、HRスキーマのJWTプロファイルを新規作成します。
BEGIN
  OAUTH_ADMIN.DELETE_JWT_PROFILE(p_schema=>'HR'); 
  OAUTH_ADMIN.CREATE_JWT_PROFILE(
      p_schema =>'HR',
      p_issuer => 'https://identity.oraclecloud.com/',
      p_audience => 'ords/myapplication/api' ,
      p_jwk_url =>'https://idcs-10a10a10a10a10a10a10a10a.identity.oraclecloud.com/admin/v1/SigningCert/jwk'
  );
  COMMIT;
END;
/
HRスキーマ内のリソースに対するリクエストは、認可にJWTベアラー・トークンを使用できます。JWTトークンは署名されている必要があり、そのシグネチャは、p_jwk_urlによって提供された公開キーを使用して検証可能である必要があります。JWTの発行者クレームおよびオーディエンス・クレームがp_issuerおよびp_audienceの値と一致している必要もあります。JWTでは、そのリソースによって保護されているORDS権限に一致するスコープを指定する必要があります。

7.2 OAUTH_ADMIN.DELETE_JWT_PROFILE

形式

OAUTH_ADMIN.DELETE_JWT_PROFILE ( p_schema       IN VARCHAR2) ;

説明

指定されたスキーマのJWTプロファイルが存在する場合にそれを削除します。

パラメータ

p_schema

スキーマの名前です。このパラメータは必須です。

使用上のノート

操作を有効にするには、このプロシージャを呼び出した後でCOMMIT文を使用します。

次の例では、スキーマHRの既存のJWTプロファイルを削除します。
BEGIN
  OAUTH_ADMIN.DELETE_JWT_PROFILE(p_schema=>'HR');
  COMMIT;
END;
/
HRスキーマ内の保護されたリソースへのリクエストを認可する間には、JWTベアラー・トークンは受け入れられません。