8 ORDS_SECURITY 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月)以降は、これらのパッケージはサポートされなくなります。

8.1 create_jwt_profile

形式

PROCEDURE create_jwt_profile(
      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アクセス・トークンでは、JWTサブジェクトが、このスキーマの指定されたスコープ(ORDS権限)があると認可されます。
パラメータ 説明
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文を使用します。

8.1.1

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

例8-1

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

8.2 delete_jwt_profile

形式

PROCEDURE delete_jwt_profile;
説明
JWTプロファイルを削除します。保護されたリソースへのリクエストを認可するときには、JWTベアラー・トークンは受け入れられません。
使用上のノート
この操作を有効にするには、このメソッドのコール後に、例のようにCOMMIT文を使用します。

8.2.1

例8-2

次の例では、スキーマの既存の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_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;
/

例8-3

次の例では、スキーマの既存のJWTプロファイルを削除します: BEGIN
BEGIN
  ORDS_SECURITY.DELETE_JWT_PROFILE;
  COMMIT;
END;
/

8.3 delete_client

形式

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

表8-1 パラメータ

パラメータ 説明
p_client_key 削除するクライアント登録のキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
使用上のノート
この操作を有効にするには、このメソッドをコールした後に、例のようにCOMMIT文を使用します。

8.4 delete_client

形式

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

表8-2 パラメータ

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

8.4.1

次の例では、OAuthクライアント登録を削除します:

例8-4

BEGIN
  ORDS_SECURITY.DELETE_CLIENT(
      p_client_key => ords_types.oauth_client_key(p_name=>'CLIENT_TEST')
  );
  COMMIT;
END;
/

例8-5

BEGIN
  ORDS_SECURITY.DELETE_CLIENT(
      p_name => 'CLIENT_TEST'
  );
  COMMIT;
END;
/

8.5 grant_client_role

形式

PROCEDURE grant_client_role(
      p_client_key IN ords_types.t_client_key,
      p_role_name  IN VARCHAR2
説明
OAuthクライアントにロールを付与します。

表8-3 パラメータ

パラメータ 説明
p_client_key クライアント権限受領者のキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
p_role_name そのスキーマに属しているか組込みロールである、付与するロールの名前。この値にnullは指定できません。
使用上のノート
この操作を有効にするには、このメソッドをコールした後に、例のようにCOMMIT文を使用します。

8.6 grant_client_role

形式

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

表8-4 パラメータ

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

8.6.1

次の例では、ロールを作成し、OAuthクライアントにそのロールを付与します:

例8-6

BEGIN
  ORDS.CREATE_ROLE(p_role_name => 'CLIENT_TEST_ROLE');

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

例8-7

BEGIN
  ORDS.CREATE_ROLE(p_role_name => 'CLIENT_TEST_ROLE');

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

8.7 import_client

形式

FUNCTION import_client(
      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;
説明
クライアント・シークレットを登録するには、クライアント・インポートの後にREGISTER_CLIENT_SECRETまたはROTATE_CLIENT_SECRETをコールします。デフォルトでは、client_secretは登録されません。

表8-5 パラメータ

パラメータ 説明
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 認可コードがauthorization_codeである場合のみ適用可能な、コード・トークンの期間(秒単位)。この値がNULLに設定されているかgrant_type値がauthorization_codeでない場合、この値は300になります。
使用上のノート
この操作を有効にするには、このメソッドのコール後にCOMMIT文を使用します。
戻り値
登録済クライアントのクライアント・キー(id|name|client_id)。

8.8 import_client

形式

PROCEDURE import_client(
      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をコールし、その後にクライアントをインポートします。

表8-6 パラメータ

パラメータ 説明
p_name Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示される、クライアントの名前。
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文を使用します。

8.8.1

例8-8

次の例では、カスタム期間やオリジンなしでOAuthクライアントをインポートします:
BEGIN
  ORDS_SECURITY.IMPORT_CLIENT(
      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;
/

8.9 register_client

形式

PROCEDURE register_client(
      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は登録されません。クライアント・シークレットを登録するには、パラメータp_client_secretで任意のフィールドを設定するか(issued_on以外)、クライアント登録の後にREGISTER_CLIENT_SECRETまたはROTATE_CLIENT_SECRETをコールします。

表8-7 パラメータ

パラメータ 説明
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_typeがclient_credentialsである場合はnullにもできます。それ以外の場合はnullにできません。
p_client_secret クライアント・シークレットのデフォルト。issued_on以外のどのフィールドでも設定できます。デフォルトでは、シークレットは登録されません。
p_privilege_names クライアントがアクセスするカンマ区切りの権限のリストです。
p_origins_allowed URLの接頭辞のカンマ区切りリスト。リストが空の場合、既存のオリジンは削除されます。
p_redirect_uri OAuthアクセス・トークンやエラーが含まれているリダイレクトの送信先となるクライアント制御URI。p_support_emailclient_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(存在する場合)。

8.10 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をコールし、その後にクライアントを登録します。

表8-8 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。*この値はnullにできません。
p_name Three-Legged OAuthの*承認フェーズの間にエンド・ユーザーに表示される、クライアントの名前。*この値は一意である必要があり、nullにできません。
p_grant_type 'authorization_code'、'implicit'または* 'client_credentials'のどれかである必要があります。*この値はnullにできません。
p_support_email サポートを得るためにエンド・ユーザーがクライアントに連絡できるURI。*たとえば、www.myclientdomain.com/support/などです。*この値はnullにできません。
p_description Three-Legged OAuthの*承認フェーズの間に*エンド・ユーザーに表示される、クライアントの目的の説明。p_grant_typeが'client_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_code_duration 値が認可コードである場合のみ適用可能な、コード・トークンの期間(秒単位)。この値がNULLに設定されているかgrant_type値がauthorization_codeでない場合、この値は300になります。
使用上のノート
この操作を有効にするには、このメソッドのコール後にCOMMIT文を使用します。
戻り値
登録済クライアントのクライアント・キー(id|name|client_id)およびclient_secret(存在する場合)。

8.10.1

例8-9

次の例では、OAuthクライアントを登録します:

DECLARE
  l_client_cred ords_types.t_client_credentials;
BEGIN
  l_client_cred := ORDS_SECURITY.REGISTER_CLIENT(
      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;
/

例8-10

次の例では、クライアント・シークレットを指定してOAuthクライアントを登録します:
DECLARE
  l_client_cred ords_types.t_client_credentials;
BEGIN
  l_client_cred := ORDS_SECURITY.REGISTER_CLIENT(
      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;
/

例8-11

次の例では、OAuthクライアントを登録します:
DECLARE
  l_client_id user_ords_clients.client_id%TYPE;
BEGIN
  ORDS_SECURITY.REGISTER_CLIENT(
      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;
/

8.11 register_client_secret

形式

FUNCTION register_client_secret(
      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クライアント・シークレットを登録し、必要な場合に既存のシークレットおよびセッションを取り消します。デフォルトでは、生成されたクライアント・シークレットが登録され(「ROTATE_CLIENT_SECRET」を参照)、最新のクライアント・シークレットと既存のクライアント・セッションが有効なままになります。

ノート:

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

表8-9 パラメータ

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

8.11.1

例8-12

次の例では、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_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;
/

例8-13

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

8.12 rename_client

形式

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

表8-10 パラメータ

パラメータ 説明
p_name 名前変更するクライアントの現在の名前。nullは指定できない。
p_new_name クライアントの新しい名前。nullは指定できない。
使用上のノート
この操作を有効にするには、このメソッドのコール後にCOMMIT文を使用します。

8.13 rename_client

形式

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

表8-11 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_name 名前変更するクライアントの現在の名前。nullは指定できない。
p_new_name クライアントの新しい名前。nullは指定できない。
使用上のノート
この操作を有効にするには、このファンクションをコールした後にCOMMIT文を使用します。

8.13.1

次の例では、OAuthクライアントの名前を変更します:

例8-14

BEGIN
  ORDS_SECURITY.RENAME_CLIENT(
      p_client_key => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_new_name   => 'CLIENT_TEST_RENAMED'
  );
  COMMIT;
END;
/

例8-15

BEGIN
  ORDS_SECURITY.RENAME_CLIENT(
      p_name     => 'CLIENT_TEST',
      p_new_name => 'CLIENT_TEST_RENAMED'
  );
  COMMIT;
END;
/

8.14 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では、格納されていないシークレットは返せません。

表8-12 パラメータ

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

8.15 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では、格納されていないシークレットは返せません。

表8-13 パラメータ

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

8.15.1

次の例では、OAuthクライアントをローテーションします。既存のクライアント・シークレットは、取り消されるまで機能し続けます:

例8-16

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_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;
/

例8-17

DECLARE
  l_client_secret user_ords_clients.client_secret%TYPE;
BEGIN
  l_client_secret := ORDS_SECURITY.ROTATE_CLIENT_SECRET(
      p_name => 'CLIENT_TEST'
  );
  -- No Commit Required
  sys.dbms_output.put_line('SECRET:' || l_client_secret);
END;
/

例8-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_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;
/

8.16 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を介してアクセスできないようにします。

表8-14 パラメータ

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

8.17 revoke_client_role

形式

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

表8-15 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_name クライアント権限受領者の名前。nullは指定できない。
p_role_name 以前に付与されたロールの名前。nullは指定できない。
使用上のノート
この操作を有効にするには、このファンクションをコールした後にCOMMIT文を使用します。

8.17.1

次の例では、OAuthクライアントへのロールの付与を取り消します:

例8-19

BEGIN
  ORDS_SECURITY.REVOKE_CLIENT_ROLE(
      p_client_key => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_role_name  => 'CLIENT_TEST_ROLE'
  );
  COMMIT;
END;
/

例8-20

BEGIN
  ORDS_SECURITY.REVOKE_CLIENT_ROLE(
      p_client_name => 'CLIENT_TEST',
      p_role_name   => 'CLIENT_TEST_ROLE'
    );
  COMMIT;
END;
/

8.18 revoke_client_secrets

形式

FUNCTION revoke_client_secrets(
      p_schema               IN VARCHAR2,
      p_client_key           IN ords_types.t_client_key,
      p_filter               IN ords_types.t_client_secret DEFAULT ords_constants.oauth_client_secret_default,
      p_revoke_sessions      IN BOOLEAN  DEFAULT FALSE
  ) RETURN ords_types.t_client_credentials;
説明
OAuthクライアント・シークレットの一方または両方を取り消し、必要な場合はすべてのセッションを取り消します* *デフォルトでは、これは最も古いシークレットのみを取り消しますが、p_filterパラメータの使用によって一方または両方のシークレット*を取り消せます。フィルタのフィールドは、相互に独立して機能します。

表8-16 パラメータ

パラメータ 説明
p_schema REST対応スキーマの名前。nullは指定できない。
p_client_key クライアントのキー(id|name|client_id)。少なくとも1つのキーを指定する必要があります。
p_filter 取り消すシークレットをフィルタします。フィルタがnullの場合は、最も古いシークレットのみが取り消されます。p_filter.slot = 3にした場合は、両方のスロットが取り消されます。p_filter.stored = FALSEにした場合、これは、単独で使用されているときのみ一致します。
p_revoke_sessions この値がTRUEに設定されている場合は、既存のすべてのクライアント・セッションを削除します。デフォルト値はFALSEです。
使用上のノート
スロット番号の特殊な値3は、両方のスロットを取り消すことを示します。変更はすぐにコミットされます。
戻り値
クライアント・キー(client_idを含む)、およびクライアントの取消済client_secretのスロット。返されたスロット番号で、値が3の場合は、両方のスロットが取り消されたことを示しており、NULL値の場合は、取り消されたスロットはないことを示しています。他のclient_secretフィールドはすべてnullです。

8.19 revoke_client_secret

形式

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クライアント・シークレットを取り消し、必要な場合はすべてのセッションを取り消します。デフォルトでは、最も古いシークレットのみが取り消されますが、一方または両方のシークレットを取り消すこともできます(それがクライアント・シークレット値と一致する場合)。

表8-17 パラメータ

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

8.19.1

例8-21

次の例では、値を指定して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_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;
/

例8-22

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

8.20 update_client

形式

 PROCEDURE update_client(
      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の承認フェーズの間にエンド・ユーザーに表示されます。付与タイプを変更するには、クライアントを削除してから再登録する必要があります。

表8-18 パラメータ

パラメータ 説明
p_name 変更するクライアントの名前。nullは指定できない。
p_new_name Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示される、クライアントの名前。nullにした場合は、古い名前が保持されます。
p_description Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示される、クライアントの目的の説明。p_grant_typeclient_credentialsである場合はnullにもできます。それ以外の場合、この値はnullにできません。
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_new_nameにnull以外の値を指定した場合も、クライアント名を更新できます。この操作を有効にするには、このプロシージャをコールした後にCOMMIT文を使用します。

8.21 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の承認フェーズの間にエンド・ユーザーに表示されます。付与タイプを変更するには、クライアントを削除してから再登録する必要があります。

表8-19 パラメータ

パラメータ 説明
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 許可されるオリジン
p_redirect_uri * OAuthアクセス・トークンやエラーを含むリダイレクトの送信先となるクライアント制御URI。* p_grant_type == 'client_credentials'である場合はnullにもできます。*それ以外の場合はnullにできません。
p_support_email クライアントのユーザー向けのサポート電子メール
p_support_uri クライアントのユーザー向けのサポートURI
使用上のノート
指定したすべてのクライアント属性が更新されます。他のすべての属性は変更されません。p_new_nameにnull以外の値を指定した場合も、クライアント名を更新できます。この操作を有効にするには、このファンクションをコールした後にCOMMIT文を使用します。

8.22 update_client

形式

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

表8-20 パラメータ

パラメータ 説明
p_name 変更するクライアントの名前。nullは指定できない。
p_new_name Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示される、クライアントの名前。この値がnullの場合は、古い名前が保持されます。
p_description Three-Legged OAuthの承認フェーズの間にエンド・ユーザーに表示される、クライアントの目的の説明。p_grant_typeclient_credentialsの場合はnullにもできます。それ以外の場合はnullにできません。
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_new_nameにnull以外の値を指定した場合も、クライアント名を更新できます。この操作を有効にするには、このファンクションをコールした後にCOMMIT文を使用します。

8.23 update_client

形式

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

表8-21 パラメータ

パラメータ 説明
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文を使用します。

8.23.1

例8-23

次の例では、OAuthクライアントの名前を変更し、権限と期間を除く(これらは変更されない)すべてのクライアント・フィールドを更新します:
DECLARE
  l_client_key ords_types.t_client_key;
BEGIN
  l_client_key := ORDS_SECURITY.UPDATE_CLIENT(
      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;
/

例8-24

次の例では、OAuthクライアントの名前を変更し、権限と期間を除く(これらは変更されない)すべてのクライアント・フィールドを更新します:
BEGIN
  ORDS_SECURITY.UPDATE_CLIENT(
      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;
/

例8-25

次の例では、すべてのOAuthクライアント・フィールドを更新します:
DECLARE
  l_client_key ords_types.t_client_key;
BEGIN
  l_client_key := ORDS_SECURITY.UPDATE_CLIENT(
      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;
/

例8-26

次の例では、すべてのOAuthクライアント・フィールドを更新します:
BEGIN
  ORDS_SECURITY.UPDATE_CLIENT(
      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;
/

8.24 update_client_logo

形式

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

表8-22 パラメータ

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

8.24.1

例8-27

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

例8-28

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

8.25 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クライアント権限を更新します。

表8-23 パラメータ

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

8.26 update_client_privileges

形式

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

表8-24 パラメータ

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

8.26.1

次の例では、OAuthクライアントの権限を更新します:

例8-29

BEGIN
  ORDS_SECURITY.UPDATE_CLIENT_PRIVILEGES(
      p_client_key       => ords_types.oauth_client_key(p_name=>'CLIENT_TEST'),
      p_privilege_names  => 'oracle.dbtools.sqldev'
  );
  COMMIT;
END;
/

例8-30

BEGIN
  ORDS_SECURITY.UPDATE_CLIENT_PRIVILEGES(
      p_name             => 'CLIENT_TEST',
      p_privilege_names  => 'oracle.dbtools.sqldev'
  );
  COMMIT;
END;
/

8.27 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クライアント・トークンの期間を更新します。

表8-25 パラメータ

パラメータ 説明
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文を使用します。

8.28 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クライアント・トークンの期間を更新します。

表8-26 パラメータ

パラメータ 説明
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になります。

8.28.1

次の例では、OAuthクライアントのトークン期間を更新します:

例8-31

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

例8-32

BEGIN
  ORDS_SECURITY.UPDATE_CLIENT_TOKEN_DURATION(
      p_name             => 'CLIENT_TEST',
      p_token_duration   => 3600,
      p_refresh_duration => 86400,
      p_code_duration    => 300
  );
  COMMIT;
END;
/