9 ORDS_SECURITY_ADMIN PL/SQLパッケージのリファレンス

このパッケージでは、すべてのユーザーのORDSスキーマ・セキュリティを管理するためのAPIが提供されます。このパッケージは単なるインタフェースであり、アプリケーション・ロジックは含まれません。

ノート:

OAUTHパッケージとOAUTH_ADMIN PL/SQLパッケージの非推奨: Oracle REST Data Servicesリリース(ORDS) 24.3以降では、OAUTHパッケージとOAUTH_ADMIN PL/SQLパッケージは、ORDS_SECURITYパッケージとORDS_SECURITY_ADMIN PL/SQLパッケージが優先されたため非推奨となりました。ORDSリリース25.2までは、以前のパッケージとの下位互換性が維持されます。その後のORDSリリース25.3 (2025年10月)以降は、これらのパッケージはサポートされなくなります。

9.1 create_jwt_profile

形式

PROCEDURE create_jwt_profile(
      p_schema       IN ords_schemas.parsing_schema%type,
      p_issuer       IN oauth_jwt_profile.issuer%type,
      p_audience     IN oauth_jwt_profile.audience%type,
      p_jwk_url      IN oauth_jwt_profile.jwk_url%type,
      p_description  IN oauth_jwt_profile.description%type  DEFAULT NULL,
      p_allowed_skew IN oauth_jwt_profile.allowed_skew%type DEFAULT NULL,
      p_allowed_age  IN oauth_jwt_profile.allowed_age%type  DEFAULT NULL
  );
説明
このプロファイルを使用して検証可能なJWTアクセス・トークンでは、JWTサブジェクトが、このスキーマの指定されたスコープ(ORDS権限)があると認可されます。

表9-1 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。*この値はnullにできません
p_issuer 許容可能なJWTアクセス・トークンの発行者。*この値は、JWTで指定されている"iss"クレームと一致する必要があります。
p_audience 許容可能なJWTアクセス・トークンのオーディエンス。*この値は、JWTで指定されている"aud"クレームと一致する必要があります。
p_jwk_url 許容可能なJWTアクセス・トークンを検証するために使用するJWKへのURL。*これは"https://"で始まる必要があります
p_description 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が無効になっていることを意味します。
使用上のノート
JWTプロファイルがすでに存在する場合は、まずそれを削除する必要があります。*この操作を有効にするには、このプロシージャのコール後に、例のようにCOMMIT文を使用します。

9.1.1

次の例では、スキーマの既存のJWTプロファイルを削除し、そのスキーマのJWTプロファイルを新規作成します。このスキーマ内のリソースに対するリクエストは、認可にJWTベアラー・トークンを使用できます。JWTトークンは署名されている必要があり、そのシグネチャは、p_jwk_urlによって提供された公開キーを使用して検証可能である必要があります。JWTの発行者クレームおよびオーディエンス・クレームがp_issuerおよびp_audienceの値と一致している必要もあります。JWTで、そのリソースによって保護されているORDS権限に一致するスコープを指定する必要があります:

BEGIN
  ORDS_SECURITY.DELETE_JWT_PROFILE;  
  ORDS_SECURITY.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;
/

9.2 delete_client

形式

 PROCEDURE delete_client(
      p_schema     IN VARCHAR2,
      p_client_key IN ords_types.t_client_key
  );
説明
OAuthクライアント登録を削除します。

表9-2 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_key 削除するクライアント登録のキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
使用上のノート
この操作を有効にするには、このプロシージャをコールした後に、例のようにCOMMIT文を使用します。

9.3 delete_client

形式

PROCEDURE delete_client(
      p_schema IN VARCHAR2,
      p_name   IN VARCHAR2
  );
説明
OAuthクライアント登録を削除します。

表9-3 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name 削除するクライアント登録の名前。nullは指定できない。
使用上のノート
このプロシージャをコールした後に、例のようにCOMMIT文を使用します。

9.3.1

例9-1

次の例では、スキーマの既存のJWTプロファイルを削除します。
BEGIN
  ORDS_SECURITY.DELETE_JWT_PROFILE(
      p_schema => 'HR'
  );
  COMMIT;
END;
/
次の例では、スキーマのOAuthクライアント登録を削除します:
BEGIN
  ORDS_SECURITY.DELETE_CLIENT(
      p_schema     => 'HR',
      p_client_key => ords_types.oauth_client_key(p_name=>'CLIENT_TEST')
  );
  COMMIT;
END;
/
次の例では、スキーマのOAuthクライアント登録を削除します:
BEGIN
  ORDS_SECURITY.DELETE_CLIENT(
      p_schema => 'HR',
      p_name   => 'CLIENT_TEST'
  );
  COMMIT;
END;
/

9.4 grant_client_role

形式

PROCEDURE grant_client_role(
      p_schema      IN VARCHAR2,
      p_client_name IN VARCHAR2,
      p_role_name   IN VARCHAR2
  );
説明
OAuthクライアントにロールを付与します。

表9-4 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。
p_client_name クライアント権限受領者の名前。nullは指定できない。
p_role_name そのスキーマに属しているか組込みロールである、付与するロールの名前。nullは指定できない。
使用上のノート
この操作を有効にするには、このプロシージャをコールした後に、例のようにCOMMIT文を使用します。

9.4.1

例9-2

次の例では、ロールを作成し、スキーマのOAuthクライアントにそのロールを付与します:
BEGIN
  ORDS.CREATE_ROLE(p_role_name => 'CLIENT_TEST_ROLE');

  ORDS_SECURITY.GRANT_CLIENT_ROLE(
      p_schema     => 'HR',
      p_client_key => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_role_name  => 'CLIENT_TEST_ROLE'
  );
  COMMIT;
END;
/

例9-3

次の例では、ロールを作成し、スキーマのOAuthクライアントにそのロールを付与します:
BEGIN
  ORDS.CREATE_ROLE(p_role_name => 'CLIENT_TEST_ROLE');

  ORDS_SECURITY.GRANT_CLIENT_ROLE(
      p_schema      => 'HR',
      p_client_name => 'CLIENT_TEST',
      p_role_name   => 'CLIENT_TEST_ROLE'
  );
  COMMIT;
END;
/

9.5 import_client

形式

FUNCTION import_client(
      p_schema           IN VARCHAR2,
      p_name             IN VARCHAR2,
      p_grant_type       IN VARCHAR2,
      p_support_email    IN VARCHAR2,
      p_description      IN VARCHAR2 DEFAULT NULL,
      p_client_id        IN VARCHAR2 DEFAULT NULL,
      p_privilege_names  IN VARCHAR2 DEFAULT NULL,
      p_origins_allowed  IN VARCHAR2 DEFAULT NULL,
      p_redirect_uri     IN VARCHAR2 DEFAULT NULL,
      p_support_uri      IN VARCHAR2 DEFAULT NULL,
      p_token_duration   IN NUMBER   DEFAULT NULL,
      p_refresh_duration IN NUMBER   DEFAULT NULL,
      p_code_duration    IN NUMBER   DEFAULT NULL
  ) RETURN ords_types.t_client_key;
説明
OAuthクライアントをインポートします。デフォルトでは、client_secretは登録されません。クライアント・シークレットを登録するには、REGISTER_CLIENT_SECRETまたはROTATE_CLIENT_SECRETをコールし、その後にimport_clientファンクションをコールします。

表9-5 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示される、クライアントの名前。この値は一意である必要があり、nullにできません。
p_grant_type authorization_codeimplicitまたはclient_credentialsのどれかである必要があります。nullは指定できない。
p_support_email エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIです。たとえば、www.myclientdomain.com/support/などです。nullは指定できない。
p_description クライアントの目的の説明で、Three-Legged OAuthの承認フェーズでエンド・ユーザーに表示されます。p_grant_typeclient_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_client_id 元の生成されたクライアント識別子。「ORDS_EXPORT」を参照してください。nullにした場合は、新しいクライアント識別子が生成されます。
p_privilege_names クライアントがアクセスするカンマ区切りの権限のリストです。それらの権限がすでに存在している必要があります。「ORDS.DEFINE_PRIVILEGE」を参照してください。
p_origins_allowed URLの接頭辞のカンマ区切りリスト。リストが空の場合、既存のオリジンは削除されます。
p_redirect_uri OAuthアクセス・トークンやエラーが含まれているリダイレクトの送信先となるクライアント制御URI。これがp_support_email client_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_support_uri エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIです。たとえば、www.myclientdomain.com/support/などです。
p_token_duration アクセス・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、3600秒に設定されます。
p_refresh_duration リフレッシュ・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、86400秒に設定されます。
p_code_duration 認可コードの場合のみ適用可能な、コード・トークンの期間(秒単位)。この値がNULLに設定されているかgrant_type grant_type値がauthorization_codeでない場合、この値は300になります。
使用上のノート
この操作を有効にするには、このファンクションをコールした後にCOMMIT文を使用します。
戻り値
登録済クライアントのクライアント・キー(id|name|client_id)。

9.6 import_client

形式

PROCEDURE import_client(
      p_schema           IN VARCHAR2,
      p_name             IN VARCHAR2,
      p_grant_type       IN VARCHAR2,
      p_support_email    IN VARCHAR2,
      p_description      IN VARCHAR2 DEFAULT NULL,
      p_owner            IN VARCHAR2 DEFAULT NULL,
      p_client_id        IN VARCHAR2 DEFAULT NULL,
      p_privilege_names  IN VARCHAR2 DEFAULT NULL,
      p_origins_allowed  IN VARCHAR2 DEFAULT NULL,
      p_redirect_uri     IN VARCHAR2 DEFAULT NULL,
      p_support_uri      IN VARCHAR2 DEFAULT NULL,
      p_token_duration   IN NUMBER   DEFAULT NULL,
      p_refresh_duration IN NUMBER   DEFAULT NULL,
      p_code_duration    IN NUMBER   DEFAULT NULL
  );
説明
OAuthクライアントをインポートします。デフォルトでは、client_secretは登録されません。クライアント・シークレットを登録するには、REGISTER_CLIENT_SECRETまたはROTATE_CLIENT_SECRETをコールし、その後にimport_clientをコールします。

表9-6 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name Three-Legged OAuthの*承認フェーズの間にエンド・ユーザーに表示される、クライアントの名前。*この値は一意である必要があり、nullにできません。
p_grant_type authorization_codeimplicitまたはclient_credentialsのどれかである必要があります。nullは指定できない。
p_support_email エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIです。たとえば、www.myclientdomain.com/support/などです。nullは指定できない。
p_description クライアントの目的の説明で、Three-Legged OAuthの承認フェーズでエンド・ユーザーに表示されます。p_grant_typeclient_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_owner 使用されていません(非推奨)。
p_client_id 元の生成されたクライアント識別子。「ORDS_EXPORT」を参照してください。この値がnullの場合は、新しいクライアント識別子が生成されます。
p_privilege_names クライアントがアクセスするカンマ区切りの権限のリストです。それらの権限がすでに存在している必要があります。「ORDS.DEFINE_PRIVILEGE」を参照してください。
p_origins_allowed URLの接頭辞のカンマ区切りリスト。リストが空の場合、既存のオリジンは削除されます。
p_redirect_uri OAuthアクセス・トークンやエラーが含まれているリダイレクトの送信先となるクライアント制御URI。これがp_support_email client_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_support_uri エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIです。たとえば、www.myclientdomain.com/support/などです。
p_token_duration アクセス・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、3600秒に設定されます。
p_refresh_duration リフレッシュ・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、86400秒に設定されます。
p_code_duration 認可コードの場合のみ適用可能な、コード・トークンの期間(秒単位)。この値がNULLに設定されているかgrant_type値が* authorization_codeでない場合、この値は300になります。
使用上のノート
この操作を有効にするには、このプロシージャをコールした後にCOMMIT文を使用します。

9.6.1

例9-4

次の例では、カスタム期間やオリジンなしでスキーマのOAuthクライアントをインポートします:
DECLARE
  l_client_key ords_types.t_client_key;
BEGIN
  l_client_key := ORDS_SECURITY.IMPORT_CLIENT(
      p_schema          => 'HR',
      p_name            => 'CLIENT_TEST',
      p_client_id       => 'awVMtPlqullIqPXhAwh4zA..',
      p_grant_type      => 'authorization_code',
      p_description     => 'This is a test description.',
      p_origins_allowed => NULL,
      p_redirect_uri    => 'https://example.org/my_redirect/',
      p_support_email   => 'test@example.org',
      p_support_uri     => 'https://example.org/help/',
      p_privilege_names => 'oracle.dbtools.sqldev');
  COMMIT;
  sys.dbms_output.put_line('ID:' || l_client_key.id);
END;
/

例9-5

次の例では、カスタム期間やオリジンなしでスキーマのOAuthクライアントをインポートします:
DECLARE
  l_client_key ords_types.t_client_key;
BEGIN
  l_client_key := ORDS_SECURITY.IMPORT_CLIENT(
      p_schema          => 'HR',
      p_name            => 'CLIENT_TEST',
      p_client_id       => 'awVMtPlqullIqPXhAwh4zA..',
      p_grant_type      => 'authorization_code',
      p_description     => 'This is a test description.',
      p_origins_allowed => NULL,
      p_redirect_uri    => 'https://example.org/my_redirect/',
      p_support_email   => 'test@example.org',
      p_support_uri     => 'https://example.org/help/',
      p_privilege_names => 'oracle.dbtools.sqldev');
  COMMIT;
  sys.dbms_output.put_line('ID:' || l_client_key.id);
END;
/

例9-6

次の例では、カスタム期間やオリジンなしでスキーマのOAuthクライアントをインポートします:
EGIN
  ORDS_SECURITY.IMPORT_CLIENT(
      p_schema          => 'HR',
      p_name            => 'CLIENT_TEST',
      p_client_id       => 'awVMtPlqullIqPXhAwh4zA..',
      p_grant_type      => 'authorization_code',
      p_owner           => 'RESTEASY',
      p_description     => 'This is a test description.',
      p_origins_allowed => NULL,
      p_redirect_uri    => 'https://example.org/my_redirect/',
      p_support_email   => 'test@example.org',
      p_support_uri     => 'https://example.org/help/',
      p_privilege_names => 'oracle.dbtools.sqldev');
  COMMIT;
END;
/

9.7 register_client

形式

FUNCTION register_client(
      p_schema           IN VARCHAR2,
      p_name             IN VARCHAR2,
      p_grant_type       IN VARCHAR2,
      p_support_email    IN VARCHAR2,
      p_description      IN VARCHAR2 DEFAULT NULL,
      p_client_secret    IN ords_types.t_client_secret DEFAULT ords_constants.oauth_client_secret_skip,
      p_privilege_names  IN VARCHAR2 DEFAULT NULL,
      p_origins_allowed  IN VARCHAR2 DEFAULT NULL,
      p_redirect_uri     IN VARCHAR2 DEFAULT NULL,
      p_support_uri      IN VARCHAR2 DEFAULT NULL,
      p_token_duration   IN NUMBER   DEFAULT NULL,
      p_refresh_duration IN NUMBER   DEFAULT NULL,
      p_code_duration    IN NUMBER   DEFAULT NULL
  ) RETURN ords_types.t_client_credentials;
説明
OAuthクライアントを登録します。デフォルトでは、client_secretは登録されません。クライアント・シークレットを登録するには、パラメータp_client_secretで任意のフィールドを設定するか(issued_on以外)、REGISTER_CLIENT_SECRETまたはROTATE_CLIENT_SECRETをコールし、その後にクライアントを登録します。

表9-7 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示される、クライアントの名前。この値は一意である必要があり、nullにできません。
p_grant_type authorization_codeimplicitまたはclient_credentialsのどれかである必要があります。nullは指定できない。
p_support_email エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIです。たとえば、www.myclientdomain.com/support/などです。nullは指定できない。
p_description クライアントの目的の説明で、Three-Legged OAuthの承認フェーズでエンド・ユーザーに表示されます。p_grant_typeclient_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_client_secret クライアント・シークレットのデフォルト。issued_onフィールド以外のどのフィールドでも設定できます。デフォルトでは、シークレットは登録されません。
p_privilege_names クライアントがアクセスするカンマ区切りの権限のリストです。
p_origins_allowed URLの接頭辞のカンマ区切りリスト。リストが空の場合、既存のオリジンは削除されます。
p_redirect_uri OAuthアクセス・トークンやエラーが含まれているリダイレクトの送信先となるクライアント制御URI。これがp_support_email client_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_support_uri エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIです。たとえば、www.myclientdomain.com/support/などです。
p_token_duration アクセス・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、3600秒に設定されます。
p_refresh_duration リフレッシュ・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、86400秒に設定されます。
p_code_duration 認可コードの場合のみ適用可能な、コード・トークンの期間(秒単位)。この値がNULLに設定されているかgrant_type値がauthorization_codeでない場合、この値は300になります。
使用上のノート
この操作を有効にするには、このファンクションをコールした後にCOMMIT文を使用します。
戻り値
登録済クライアントのクライアント・キー(id|name|client_id)およびclient_secret(存在する場合)。

9.8 register_client

形式

 PROCEDURE register_client(
      p_schema           IN VARCHAR2,
      p_name             IN VARCHAR2,
      p_grant_type       IN VARCHAR2,
      p_support_email    IN VARCHAR2,
      p_description      IN VARCHAR2 DEFAULT NULL,
      p_privilege_names  IN VARCHAR2 DEFAULT NULL,
      p_origins_allowed  IN VARCHAR2 DEFAULT NULL,
      p_redirect_uri     IN VARCHAR2 DEFAULT NULL,
      p_support_uri      IN VARCHAR2 DEFAULT NULL,
      p_token_duration   IN NUMBER   DEFAULT NULL,
      p_refresh_duration IN NUMBER   DEFAULT NULL,
      p_code_duration    IN NUMBER   DEFAULT NULL
  );
説明
OAuthクライアントを登録します。デフォルトでは、client_secretは登録されません。クライアント・シークレットを登録するには、REGISTER_CLIENT_SECRETまたはROTATE_CLIENT_SECRETをコールし、その後にクライアントを登録します。

表9-8 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示される、クライアントの名前。この値は一意である必要があり、nullにできません。
p_grant_type authorization_codeimplicitまたはclient_credentialsのどれかである必要があります。nullは指定できない。
p_support_email エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIです。たとえば、www.myclientdomain.com/support/などです。nullは指定できない。
p_description クライアントの目的の説明で、Three-Legged OAuthの承認フェーズでエンド・ユーザーに表示されます。p_grant_typeclient_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_privilege_names クライアントがアクセスするカンマ区切りの権限のリストです。
p_origins_allowed URLの接頭辞のカンマ区切りリスト。リストが空の場合、既存のオリジンは削除されます。
p_redirect_uri OAuthアクセス・トークンやエラーが含まれているリダイレクトの送信先となるクライアント制御URI。これがp_support_email client_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_support_uri エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIです。たとえば、www.myclientdomain.com/support/などです。
p_token_duration アクセス・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、3600秒に設定されます。
p_refresh_duration リフレッシュ・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、86400秒に設定されます。
p_code_duration 認可コードの場合のみ適用可能な、コード・トークンの期間(秒単位)。この値がNULLに設定されているかgrant_type値がauthorization_codeでない場合、この値は300になります。
使用方法
この操作を有効にするには、このプロシージャをコールした後にCOMMIT文を使用します。

9.8.1

例9-7

DECLARE
  l_client_cred ords_types.t_client_credentials;
BEGIN
  l_client_cred := ORDS_SECURITY.REGISTER_CLIENT(
      p_schema          => 'HR',
      p_name            => 'CLIENT_TEST',
      p_grant_type      => 'authorization_code',
      p_description     => 'This is a test description.',
      p_redirect_uri    => 'https://example.org/my_redirect/',
      p_support_email   => 'test@example.org',
      p_support_uri     => 'https://example.org/help/',
      p_privilege_names => 'oracle.dbtools.sqldev');
  COMMIT;
  sys.dbms_output.put_line('CLIENT_ID:' || l_client_cred.client_key.client_id);
END;
/

例9-8

次の例では、クライアント・シークレットを指定してOAuthクライアントをスキーマに登録します:
DECLARE
  l_client_cred ords_types.t_client_credentials;
BEGIN
  l_client_cred := ORDS_SECURITY.REGISTER_CLIENT(
      p_schema          => 'HR',
      p_name            => 'CLIENT_TEST',
      p_grant_type      => 'authorization_code',
      p_description     => 'This is a test description.',
      p_client_secret   => ords_types.oauth_client_secret(p_secret=>'RaFhM690PA6cN1ffpkNx3Q..'),
      p_redirect_uri    => 'https://example.org/my_redirect/',
      p_support_email   => 'test@example.org',
      p_support_uri     => 'https://example.org/help/',
      p_privilege_names => 'oracle.dbtools.sqldev');
  COMMIT;
  sys.dbms_output.put_line('CLIENT_ID:'     || l_client_cred.client_key.client_id);
  sys.dbms_output.put_line('CLIENT_SECRET:' || l_client_cred.client_secret.secret);
END;
/

例9-9

次の例では、スキーマにOAuthクライアントを登録します:
DECLARE
  l_client_id user_ords_clients.client_id%TYPE;
BEGIN
  ORDS_SECURITY.REGISTER_CLIENT(
      p_schema          => 'HR',
      p_name            => 'CLIENT_TEST',
      p_grant_type      => 'authorization_code',
      p_description     => 'This is a test description.',
      p_redirect_uri    => 'https://example.org/my_redirect/',
      p_support_email   => 'test@example.org',
      p_support_uri     => 'https://example.org/help/',
      p_privilege_names => 'oracle.dbtools.sqldev');
  COMMIT;
  SELECT client_id INTO l_client_id FROM user_ords_clients WHERE name = 'CLIENT_TEST';
END;
/

9.9 register_client_secret

形式

FUNCTION register_client_secret(
      p_schema          IN VARCHAR2,
      p_client_key      IN ords_types.t_client_key,
      p_client_secret   IN ords_types.t_client_secret,
      p_revoke_existing IN BOOLEAN DEFAULT FALSE,
      p_revoke_sessions IN BOOLEAN DEFAULT FALSE
  ) RETURN ords_types.t_client_credentials;
説明
OAuthクライアント・シークレットを登録し、必要な場合に既存のシークレットおよびセッションを取り消します。デフォルトでは、生成されたクライアント・シークレットが登録され、最新のクライアント・シークレットと既存のクライアント・セッションが有効なままになります。すでに2つのクライアント・シークレットが登録されている場合は、p_client_secret.slotパラメータに特定のスロットが設定されていないかぎり、最も古いものが上書きされることになります。また、既存のすべてのクライアント・シークレットは、p_revoke_existingパラメータを使用して取り消されないかぎり有効なままになります。「ROTATE_CLIENT_SECRET」を参照してください。

ノート:

p_client_secret.secretが設定されている場合に、カスタム・クライアント・シークレットを登録できます。登録されたクライアント・シークレット値は、p_client_secret.storedパラメータが設定されていないかぎり、このファンクションの使用によって永続化されません。クライアント・シークレットが永続化されなくなった場合は、将来使用するために、コール元によって戻り値を保存する必要があります。ビューUSER_ORDS_CLIENTSでは、格納されていないシークレットは返せません。

表9-9 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_key 登録済クライアントのキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
p_client_secret クライアント・シークレットのデフォルト。issued_on以外のどのフィールドでも設定できます。この値がnullの場合、クライアント・シークレットは、生成された値でローテーションされます。
p_revoke_existing 既存のシークレットをすべて取り消します。デフォルトでは、最新のクライアント・シークレットが保持されます。
p_revoke_sessions この値がTRUEの場合は、既存のすべてのクライアント・セッションを取り消します。
使用上のノート
TRUEの場合は、既存のすべてのクライアント・セッションを取り消します。
戻り値
クライアント・キー(client_idを含む)および登録済のclient_secret

9.10 register_client_secret

形式

 PROCEDURE register_client_secret(
      p_schema          IN VARCHAR2,
      p_name            IN VARCHAR2,
      p_client_secret   IN VARCHAR2,
      p_revoke_existing IN BOOLEAN DEFAULT FALSE,
      p_revoke_sessions IN BOOLEAN DEFAULT FALSE
  );
説明
新しいOAuthクライアント・シークレットを登録し、必要な場合は、既存のクライアント・セッションをすべて削除します。デフォルトでは、既存のクライアントセッションは有効なままになります。すでに2つのクライアント・シークレットが登録されている場合は、最も古いものが上書きされます。既存のすべてのクライアント・シークレットは、p_revoke_existingパラメータを使用して取り消されないかぎり有効なままになります。

ノート:

登録されたクライアント・シークレット値は、このメソッドの使用では永続化されません。将来使用するために、コール元によって戻り値を保存する必要があります。ビューUSER_ORDS_CLIENTSでは、格納されていないシークレットは返せません。

表9-10 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name 登録されているクライアントの名前。nullは指定できない。
p_client_secret 新しいシークレット。この値はnullにできません。
p_revoke_existing 既存のシークレットをすべて取り消します。デフォルトでは、最新のクライアント・シークレットが保持されます。
p_revoke_sessions TRUEの場合は、既存のすべてのクライアント・セッションを取り消します。
使用上のノート
変更はすぐにコミットされます。

9.10.1

例9-10

次の例では、スキーマにOAuthクライアントのシークレットを登録します。既存のクライアント・シークレットは、取り消されるまで機能し続けます:
DECLARE
  l_client_cred ords_types.t_client_credentials;
BEGIN
  l_client_cred.client_key.name      := 'CLIENT_TEST';
  l_client_cred.client_secret.secret := 'RaFhM690PA6cN1ffpkNx3Q..';
   
  l_client_cred := ORDS_SECURITY.REGISTER_CLIENT_SECRET(
      p_schema        => 'HR',
      p_client_key    => l_client_cred.client_key,
      p_client_secret => l_client_cred.client_secret
  );
  -- No Commit Required
  sys.dbms_output.put_line('SLOT:'      || l_client_cred.client_secret.slot);
  sys.dbms_output.put_line('ISSUED ON:' || l_client_cred.client_secret.issued_on);
END;
/

例9-11

次の例では、スキーマにOAuthクライアントのシークレットを登録します。既存のクライアント・シークレットは、取り消されるまで機能し続けます:
BEGIN
  ORDS_SECURITY.REGISTER_CLIENT_SECRET(
      p_schema        => 'HR',
      p_name          => 'CLIENT_TEST',
      p_client_secret => 'RaFhM690PA6cN1ffpkNx3Q..'
  );
  -- No Commit Required
END;
/

9.11 rename_client

形式

PROCEDURE rename_client(
      p_schema     IN VARCHAR2,
      p_client_key IN ords_types.t_client_key,
      p_new_name   IN VARCHAR2
  );
説明
OAuthクライアントの名前を変更します。クライアントの名前はThree-Legged OAuthの承認フェーズでエンド・ユーザーに表示されます。

表9-11 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_key 名前変更するクライアントのキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
p_new_name クライアントの新しい名前。nullは指定できない。
使用上のノート
この操作を有効にするには、このプロシージャをコールした後にCOMMIT文を使用します。

9.12 rename_client

形式

PROCEDURE rename_client(
      p_schema   IN VARCHAR2,
      p_name     IN VARCHAR2,
      p_new_name IN VARCHAR2
  );
説明
OAuthクライアントの名前を変更します* *このクライアント名は、Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示されます。

表9-12 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。*この値はnullにできません。
p_name 名前変更するクライアントの現在の名前。*この値はnullにできません。
p_new_name クライアントの新しい名前。*この値はnullにできません
使用上のノート
*この操作を有効にするには、このメソッドのコール後にCOMMIT文を使用します。

9.12.1

例9-12

次の例では、スキーマのOAuthクライアントの名前を変更します:
BEGIN
  ORDS_SECURITY.RENAME_CLIENT(
      p_schema     => 'HR',
      p_client_key => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_new_name   => 'CLIENT_TEST_RENAMED'
  );
  COMMIT;
END;
/

例9-13

次の例では、スキーマのOAuthクライアントの名前を変更します:
BEGIN
  ORDS_SECURITY.RENAME_CLIENT(
      p_schema   => 'HR',
      p_name     => 'CLIENT_TEST',
      p_new_name => 'CLIENT_TEST_RENAMED'
  );
  COMMIT;
END;
/

9.13 rotate_client_secret

形式

FUNCTION rotate_client_secret(
      p_schema          IN VARCHAR2,
      p_client_key      IN ords_types.t_client_key,
      p_revoke_existing IN BOOLEAN DEFAULT FALSE,
      p_revoke_sessions IN BOOLEAN DEFAULT FALSE
  ) RETURN ords_types.t_client_credentials;
説明
新しいOAuthクライアント・シークレットを生成し、必要な場合は、既存のクライアント・セッションをすべて削除します。すでに2つのクライアント・シークレットが登録されている場合は、最も古いものが上書きされます。また、既存のすべてのクライアント・シークレットは、p_revoke_existingパラメータを使用して取り消されないかぎり有効なままになります。

ノート:

生成されたクライアント・シークレットは、このメソッドの使用では格納されないため、将来使用するために、コール元によって戻り値を保存する必要があります。ビューUSER_ORDS_CLIENTSでもこの値は返されません。ビューUSER_ORDS_CLIENTSでは、格納されていないシークレットは返せません。

表9-13 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_key スキーマ内のクライアントのキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
p_revoke_existing 既存のシークレットをすべて取り消します。デフォルト値はFALSEです。
p_revoke_sessions この値がTRUEの場合は、既存のすべてのクライアント・セッションを削除します。デフォルト値はFALSEです。
使用上のノート
この操作を有効にするには、このファンクションをコールした後にCOMMIT文を使用します。
戻り値
登録されているクライアント・シークレット値。この値は、将来参照できるように、コール元によって保存する必要があります。

9.14 rotate_client_secret

形式

FUNCTION rotate_client_secret(
      p_schema          IN VARCHAR2,
      p_name            IN VARCHAR2,
      p_revoke_existing IN BOOLEAN DEFAULT FALSE,
      p_revoke_sessions IN BOOLEAN DEFAULT FALSE
  ) RETURN VARCHAR2;
説明
新しいOAuthクライアント・シークレットを生成し、必要な場合は、既存のクライアント・セッションをすべて削除します。すでに2つのクライアント・シークレットが登録されている場合は、最も古いものが上書きされます。また、既存のすべてのクライアント・シークレットは、p_revoke_existingパラメータを使用して取り消されないかぎり有効なままになります。

ノート:

生成されたクライアント・シークレットは、このメソッドの使用では格納されないため、将来使用するために、コール元によって戻り値を保存する必要があります。ビューUSER_ORDS_CLIENTSでもこの値は返されません。ビューUSER_ORDS_CLIENTSでは、格納されていないシークレットは返せません。

表9-14 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name 変更するクライアントの名前。nullは指定できない。
p_revoke_existing 既存のシークレットをすべて取り消します。デフォルト値はFALSEです。
p_revoke_sessions TRUEの場合は、既存のクライアント・セッションをすべて削除します。デフォルト値はFALSEです。
使用上のノート
変更はすぐにコミットされます。
戻り値
登録されているクライアント・シークレット値。この値は、将来参照できるように、コール元によって保存する必要があります。

9.14.1

例9-14

DECLARE
  l_client_cred ords_types.t_client_credentials;
BEGIN
  l_client_cred.client_key.name := 'CLIENT_TEST';
   
  l_client_cred := ORDS_SECURITY.ROTATE_CLIENT_SECRET(
      p_schema        => 'HR',
      p_client_key    => l_client_cred.client_key
  );
  -- No Commit Required
  sys.dbms_output.put_line('SLOT:'      || l_client_cred.client_secret.slot);
  sys.dbms_output.put_line('SECRET:'    || l_client_cred.client_secret.secret);
  sys.dbms_output.put_line('ISSUED ON:' || l_client_cred.client_secret.issued_on);
END;
/

例9-15

次の例では、スキーマのOAuthクライアントをローテーションします。既存のクライアント・シークレットは、取り消されるまで機能し続けます:
DECLARE
  l_client_secret user_ords_clients.client_secret%TYPE;
BEGIN
  l_client_secret := ORDS_SECURITY.ROTATE_CLIENT_SECRET(
      p_schema => 'HR',
      p_name   => 'CLIENT_TEST'
  );
  -- No Commit Required
  sys.dbms_output.put_line('SECRET:' || l_client_secret);
END;
/

9.15 revoke_client_role

形式

PROCEDURE revoke_client_role(
      p_schema      IN VARCHAR2,
      p_client_key IN ords_types.t_client_key,
      p_role_name  IN VARCHAR2
  );
説明
指定したロールをOAuthクライアントから取り消して、そのロールを要求する権限にTwo-Legged OAuthを介してアクセスできないようにします。

表9-15 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_key クライアント権限受領者のキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
p_role_name 以前に付与されたロールの名前。この値にnullは指定できません。
使用上のノート
この操作を有効にするには、このプロシージャをコールした後にCOMMIT文を使用します。

9.15.1

例9-16

次の例では、スキーマのOAuthクライアントへのロールの付与を取り消します:
BEGIN
  ORDS_SECURITY.REVOKE_CLIENT_ROLE(
      p_schema     => 'HR',
      p_client_key => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_role_name  => 'CLIENT_TEST_ROLE'
  );
  COMMIT;
END;
/

例9-17

次の例では、スキーマのOAuthクライアントへのロールの付与を取り消します:
BEGIN
  ORDS_SECURITY.REVOKE_CLIENT_ROLE(
      p_schema      => 'HR',
      p_client_name => 'CLIENT_TEST',
      p_role_name   => 'CLIENT_TEST_ROLE'
    );
  COMMIT;
END;
/

9.16 revoke_client_secrets

形式

PROCEDURE revoke_client_secret(
      p_schema          IN VARCHAR2,
      p_name            IN VARCHAR2,
      p_client_secret   IN VARCHAR2 DEFAULT NULL,
      p_revoke_sessions IN BOOLEAN  DEFAULT FALSE
  );
説明
OAuthクライアント・シークレットを取り消し、必要な場合はすべてのセッションを取り消します。デフォルトでは、最も古いシークレットのみが取り消されますが、一方または両方のシークレットを取り消すこともできます(それがクライアント・シークレット値と一致する場合)。

表9-16 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name 変更するクライアントの名前。nullは指定できない。
p_client_secret クライアント・シークレットの値。この値がNULLの場合は、最も古いシークレットが取り消されます。
p_revoke_sessions TRUEの場合は、既存のクライアント・セッションをすべて削除します。デフォルト値はFALSEです。
使用上のノート
変更はすぐにコミットされます。

9.17 revoke_client_secrets

形式

PROCEDURE revoke_client_secret(
      p_schema          IN VARCHAR2,
      p_name            IN VARCHAR2,
      p_client_secret   IN VARCHAR2 DEFAULT NULL,
      p_revoke_sessions IN BOOLEAN  DEFAULT FALSE
  );
説明
OAuthクライアント・シークレットを取り消し、必要な場合はすべてのセッションを取り消します。デフォルトでは、最も古いシークレットのみが取り消されますが、一方または両方のシークレットを取り消すこともできます(それがクライアント・シークレット値と一致する場合)。

表9-17 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name 変更するクライアントの名前。nullは指定できない。
p_client_secret クライアント・シークレットの値。この値がNULLの場合は、最も古いシークレットが取り消されます。
p_revoke_sessions TRUEの場合は、既存のクライアント・セッションをすべて削除します。デフォルト値はFALSEです。
使用上のノート
変更はすぐにコミットされます。

9.17.1

例9-18

次の例では、値を指定してスキーマのOAuthクライアント・シークレットを取り消します:
DECLARE
  l_client_cred ords_types.t_client_credentials;
BEGIN
  l_client_cred.client_key.name      := 'CLIENT_TEST';
  l_client_cred.client_secret.secret := 'RaFhM690PA6cN1ffpkNx3Q..';
   
  l_client_cred := ORDS_SECURITY.REVOKE_CLIENT_SECRETS(
      p_schema     => 'HR',
      p_client_key => l_client_cred.client_key,
      p_filter     => l_client_cred.client_secret
  );
  -- No Commit Required
  sys.dbms_output.put_line('SLOT:'      || l_client_cred.client_secret.slot);
END;
/

例9-19

次の例では、スキーマで最も古いOAuthクライアント・シークレットを取り消し、1つのみ有効なままにします:
BEGIN
  ORDS_SECURITY.REVOKE_CLIENT_SECRET(
      p_schema => 'HR',
      p_name   => 'CLIENT_TEST'
  );
  -- No Commit Required
END;
/

9.18 update_client

形式

FUNCTION update_client(
      p_schema          IN VARCHAR2,
      p_client_key      IN ords_types.t_client_key,
      p_new_name        IN VARCHAR2 DEFAULT NULL,
      p_description     IN VARCHAR2,
      p_origins_allowed IN VARCHAR2,
      p_redirect_uri    IN VARCHAR2,
      p_support_email   IN VARCHAR2,
      p_support_uri     IN VARCHAR2
  ) RETURN ords_types.t_client_key;
説明
OAuthクライアント登録を更新します。新しいクライアント名は、Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示されます。付与タイプを変更するには、クライアントを削除してから再登録する必要があります。

表9-18 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_key 変更するクライアントのキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
p_new_name Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示される、クライアントの名前。この値がnullの場合は、古い名前が保持されます。
p_description 人間が読み取れる、*クライアントの目的の説明。Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示されます。p_grant_type == 'client_credentials'である場合はnullにもできます。それ以外の場合はnullにできません。
p_origins_allowed URLの接頭辞のカンマ区切りリスト。リストが空の場合、既存のオリジンは削除されます。
p_redirect_uri OAuthアクセス・トークンやエラーを含むリダイレクトの送信先となるクライアント制御URI。p_grant_type == 'client_credentials'である場合はnullにもできます。それ以外の場合はnullにできません。
p_support_email クライアントのユーザー向けのサポート電子メール
p_support_uri クライアントのユーザー向けのサポートURI
使用上のノート
指定したすべてのクライアント属性が更新されます。他のすべての属性は変更されません。p_new_nameにnull以外の値を指定した場合も、クライアント名を更新できます。この操作を有効にするには、このファンクションをコールした後にCOMMIT文を使用します。
戻り値
更新されたクライアントのクライアント・キー(id|name|client_id)。

9.19 update_client

形式

PROCEDURE update_client(
      p_schema          IN VARCHAR2,
      p_name             IN VARCHAR2,
      p_new_name        IN VARCHAR2 DEFAULT NULL,
      p_description     IN VARCHAR2,
      p_origins_allowed IN VARCHAR2,
      p_redirect_uri    IN VARCHAR2,
      p_support_email   IN VARCHAR2,
      p_support_uri     IN VARCHAR2
  );
説明
OAuthクライアント登録を更新します。新しいクライアント名は、Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示されます。付与タイプを変更するには、クライアントを削除してから再登録する必要があります。

表9-19 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name 変更するクライアントの名前。nullは指定できない。
p_new_name クライアントの新しい名前。nullにした場合は、古い名前が保持されます。
p_description Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示される、クライアントの目的の説明。p_grant_typeclient_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_privilege_names クライアントがアクセスするカンマ区切りの権限のリストです。それらの権限がすでに存在している必要があります。「ORDS.DEFINE_PRIVILEGE」を参照してください
p_origins_allowed URLの接頭辞のカンマ区切りリスト。リストが空の場合、既存のオリジンは削除されます。
p_redirect_uri OAuthアクセス・トークンやエラーが含まれているリダイレクトの送信先となるクライアント制御URI。これがp_support_email client_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_support_email エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIです。たとえば、www.myclientdomain.com/support/などです。nullは指定できない。
p_support_uri エンド・ユーザーがサポートを得るためにクライアントに連絡できるURIです。たとえば、www.myclientdomain.com/support/などです。
p_token_duration アクセス・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、3600秒に設定されます。
p_refresh_duration リフレッシュ・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、86400秒に設定されます。
p_code_duration 認可コードの場合のみ適用可能な、コード・トークンの期間(秒単位)。この値がNULLに設定されているかgrant_type値がauthorization_codeでない場合、この値は300になります。
使用上のノート
すべてのクライアント属性(クライアント名以外。クライアント権限を含む)は、新しく登録されたかのように更新されます。p_new_nameにnull以外の値を指定した場合も、クライアント名を更新できます。この操作を有効にするには、このメソッドをコールした後にCOMMIT文を使用します。

9.19.1

例9-20

次の例では、OAuthクライアントの名前を変更し、権限と期間を除く(これらは変更されない)、スキーマのすべてのクライアント・フィールドを更新します:
DECLARE
  l_client_key ords_types.t_client_key;
BEGIN
  l_client_key := ORDS_SECURITY.UPDATE_CLIENT(
      p_schema          => 'HR',
      p_client_key      => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_new_name        => 'CLIENT_TEST_RENAMED',
      p_description     => 'This is a test description.',
      p_origins_allowed => '*',
      p_redirect_uri    => 'https://example.org/my_redirect/',
      p_support_email   => 'test@example.org',
      p_support_uri     => 'https://example.org/help/'
  );
  COMMIT;
  sys.dbms_output.put_line('ID:' || l_client_key.id);
END;
/

例9-21

次の例では、OAuthクライアントの名前を変更し、権限と期間を除く(これらは変更されない)、スキーマのすべてのクライアント・フィールドを更新します:
BEGIN
  ORDS_SECURITY.UPDATE_CLIENT(
      p_schema          => 'HR',
      p_name            => 'CLIENT_TEST',
      p_new_name        => 'CLIENT_TEST_RENAMED',
      p_description     => 'This is a test description.',
      p_origins_allowed => '*',
      p_redirect_uri    => 'https://example.org/my_redirect/',
      p_support_email   => 'test@example.org',
      p_support_uri     => 'https://example.org/help/'
  );
  COMMIT;
END;
/

例9-22

次の例では、スキーマのすべてのOAuthクライアント・フィールドを更新します:
DECLARE
  l_client_key ords_types.t_client_key;
BEGIN
  l_client_key := ORDS_SECURITY.UPDATE_CLIENT(
      p_schema           => 'HR',
      p_client_key       => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_description      => 'This is a test description.',
      p_privilege_names  => 'oracle.dbtools.sqldev',
      p_origins_allowed  => '*',
      p_redirect_uri     => 'https://example.org/my_redirect/',
      p_support_email    => 'test@example.org',
      p_support_uri      => 'https://example.org/help/',
      p_token_duration   => 3600,
      p_refresh_duration => 86400,
      p_code_duration    => 300
  );
  COMMIT;
  sys.dbms_output.put_line('ID:' || l_client_key.id);
END;
/

例9-23

次の例では、スキーマのすべてのOAuthクライアント・フィールドを更新します:
BEGIN
  ORDS_SECURITY.UPDATE_CLIENT(
      p_schema           => 'HR',
      p_name             => 'CLIENT_TEST',
      p_description      => 'This is a test description.',
      p_privilege_names  => 'oracle.dbtools.sqldev',
      p_origins_allowed  => '*',
      p_redirect_uri     => 'https://example.org/my_redirect/',
      p_support_email    => 'test@example.org',
      p_support_uri      => 'https://example.org/help/',
      p_token_duration   => 3600,
      p_refresh_duration => 86400,
      p_code_duration    => 300
  );
  COMMIT;
END;
/

9.20 update_client_logo

形式

PROCEDURE update_client_logo(
      p_schema       IN VARCHAR2,
      p_client_key   IN ords_types.t_client_key,
      p_content_type IN VARCHAR2,
      p_logo         IN BLOB
  );
説明
OAuthクライアント・ロゴ・ファイルを更新します。

表9-20 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_key 変更するクライアントのキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
p_content_type ロゴのコンテンツ・タイプ。nullは指定できない。
p_logo ロゴのバイナリ。nullは指定できない。
使用上のノート
この操作を有効にするには、このプロシージャをコールした後にCOMMIT文を使用します。

9.21 update_client_logo

形式

PROCEDURE update_client_logo(
      p_schema       IN VARCHAR2,
      p_name         IN VARCHAR2,
      p_content_type IN VARCHAR2,
      p_logo         IN BLOB
  );
説明
OAuthクライアント・ロゴ・ファイルを更新します。

表9-21 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name 変更するクライアントの名前。nullは指定できない。
p_content_type ロゴのコンテンツ・タイプ。nullは指定できない。
p_logo ロゴのバイナリ。nullは指定できない。
使用上のノート
この操作を有効にするには、このプロシージャをコールした後にCOMMIT文を使用します。

9.21.1

例9-24

次の例では、スキーマのOAuthクライアントのロゴを追加または更新します:
DECLARE
  l_image BLOB := ...;
BEGIN
  ORDS_SECURITY.UPDATE_CLIENT_LOGO(
      p_schema       => 'HR',
      p_client_key   => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_content_type => 'image/png',
      p_logo         => l_image
  );
  COMMIT;
END;
/

例9-25

次の例では、スキーマのOAuthクライアントのロゴを追加または更新します:
DECLARE
  l_image BLOB := ...;
BEGIN
  ORDS_SECURITY.UPDATE_CLIENT_LOGO(
      p_schema       => 'HR',
      p_name         => 'CLIENT_TEST',
      p_content_type => 'image/png',
      p_logo         => l_image
  );
  COMMIT;
END;
/

9.22 update_client_privileges

形式

PROCEDURE update_client_privileges(
      p_schema          IN VARCHAR2,
      p_client_key      IN ords_types.t_client_key,
      p_privilege_names IN VARCHAR2
  );
説明
OAuthクライアント権限を更新します。

表9-22 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_key 変更するクライアントのキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
p_privilege_names クライアントがアクセスする必要がある権限の名前。各権限名をカンマで区切る必要があります。
使用上のノート
この操作を有効にするには、このプロシージャをコールした後にCOMMIT文を使用します。

9.23 update_client_privileges

形式

PROCEDURE update_client_privileges(
      p_schema          IN VARCHAR2,
      p_name            IN VARCHAR2,
      p_privilege_names IN VARCHAR2
  );
説明
OAuthクライアント権限を更新します。

表9-23 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name 変更するクライアントの名前。nullは指定できない。
p_privilege_names クライアントがアクセスするカンマ区切りの権限のリストです。それらの権限がすでに存在している必要があります。「ORDS.DEFINE_PRIVILEGE」を参照してください。
使用上のノート
この操作を有効にするには、このメソッドをコールした後にCOMMIT文を使用します。

9.23.1

例9-26

次の例では、スキーマのOAuthクライアントの権限を更新します:
BEGIN
  ORDS_SECURITY.UPDATE_CLIENT_PRIVILEGES(
      p_schema           => 'HR',
      p_client_key       => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_privilege_names  => 'oracle.dbtools.sqldev'
  );
  COMMIT;
END;
/

例9-27

次の例では、スキーマのOAuthクライアントの権限を更新します:
BEGIN
  ORDS_SECURITY.UPDATE_CLIENT_PRIVILEGES(
      p_schema           => 'HR',
      p_name             => 'CLIENT_TEST',
      p_privilege_names  => 'oracle.dbtools.sqldev'
  );
  COMMIT;
END;
/

9.24 update_client_token_duration

形式

PROCEDURE update_client_token_duration(
      p_schema           IN VARCHAR2,
      p_client_key       IN ords_types.t_client_key,
      p_token_duration   IN NUMBER,
      p_refresh_duration IN NUMBER,
      p_code_duration    IN NUMBER
  );
説明
OAuthクライアント・トークンの期間を更新します。

表9-24 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_key 変更するクライアントのキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
p_token_duration アクセス・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、3600秒に設定されます。
p_refresh_duration リフレッシュ・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、86400秒に設定されます。
p_code_duration 認可コードの場合のみ適用可能な、コード・トークンの期間(秒単位)。この値がNULLに設定されているかgrant_type値がauthorization_codeでない場合、この値は300になります。
使用上のノート
このプロシージャをコールした後にCOMMIT文を使用します。

9.25 update_client_token_duration

形式

PROCEDURE update_client_token_duration(
      p_schema           IN VARCHAR2,
      p_name             IN VARCHAR2,
      p_token_duration   IN NUMBER,
      p_refresh_duration IN NUMBER,
      p_code_duration    IN NUMBER
  );
END ords_security_admin;
説明
OAuthクライアント・トークンの期間を更新します。

表9-25 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name 変更するクライアントの名前。nullは指定できない。
p_token_duration アクセス・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、3600秒に設定されます。
p_refresh_duration リフレッシュ・トークンの期間(秒単位)。NULL期間はORDSインスタンスの値にフォールバックします。デフォルトでは、プロパティを使用して設定されるか、86400秒に設定されます。
p_code_duration 認可コードの場合のみ適用可能な、コード・トークンの期間(秒単位)。この値がNULLに設定されているか、grant_type値がauthorization_codeでない場合、この値は300になります。
使用上のノート
操作を有効にするには、このプロシージャを呼び出した後でCOMMIT文を使用します。

9.25.1

例9-28

次の例では、スキーマのOAuthクライアントのトークン期間を更新します:
BEGIN
  ORDS_SECURITY.UPDATE_CLIENT_TOKEN_DURATION(
      p_schema           => 'HR',
      p_client_key       => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_token_duration   => 3600,
      p_refresh_duration => 86400,
      p_code_duration    => 300
  );
  COMMIT;
END;
/

例9-29

次の例では、スキーマのOAuthクライアントのトークン期間を更新します:
BEGIN
  ORDS_SECURITY.UPDATE_CLIENT_TOKEN_DURATION(
      p_schema           => 'HR',
      p_name             => 'CLIENT_TEST',
      p_token_duration   => 3600,
      p_refresh_duration => 86400,
      p_code_duration    => 300
  );
  COMMIT;
END;
/