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_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プロファイルが存在する場合にそれを削除します。
使用上のノート
操作を有効にするには、このプロシージャを呼び出した後でCOMMIT
文を使用します。
例
HR
の既存のJWTプロファイルを削除します。BEGIN
OAUTH_ADMIN.DELETE_JWT_PROFILE(p_schema=>'HR');
COMMIT;
END;
/
HR
スキーマ内の保護されたリソースへのリクエストを認可する間には、JWTベアラー・トークンは受け入れられません。