データベース名はSALESADB、ワークロード・タイプはレイクハウス、データベースのバージョンは19cです。
手元の作業ディレクトリは、salesadb_oktaとします。
Oktaのアプリケーションに設定するリダイレクトURIの形式です。
https://[パブリック・アクセスURLのホスト部]/adb/auth/v1/connect/okta/callback
Oktaでのアプリケーション作成手順などは、以前に公開している記事とほぼ同じです。
原因は不明ですが、カスタム(デフォルト含む)認可サーバーのDiscovery URLは設定不可でした。Org server:https://<okta-domain>/.well-known/openid-configuration
Default/custom server:https://<okta-domain>/oauth2/<authorization-server-id>/.well-known/openid-configuration
Oktaの構成
グループの名前はsales_dbusersとします。説明に、データベースに接続できるユーザーと書きました。
グループに再度アクセスし、グループ一覧を更新します。
作成したグループsales_dbusersを開き、ユーザーを割り当てます。
新しいアプリ統合を作成のダイアログが開きます。
サインイン方法にOIDC - OpenID Connectを選択します。OIDC - OpenID Connectを選択すると、アプリケーションタイプの選択を求められます。アプリケーションタイプにはWebアプリケーションを選択します。
次へ進みます。
サインインリダイレクトURLに、以下の形式のリダイレクトURIを設定します。
データベース・ツールの外部認証の構成
https://integrator-XXXXXXXXX.okta.com/.well-known/openid-configuration
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.CREATE_IDP(
idp_name => 'OKTA',
client_id => '<client-id>',
client_secret => '<client-secret>',
params => JSON_OBJECT(
'discovery_url' VALUE
'https://<okta-domain>/oauth2/default/.well-known/openid-configuration'
));
END;
/
SQL> BEGIN
2 DBMS_CLOUD_FUNCTION_ADMIN.CREATE_IDP(
3 idp_name => 'OKTA',
4 client_id => '0***********************',
5 client_secret => 'r2y*******************************************',
6 params => JSON_OBJECT(
7 'discovery_url' VALUE
8 'https://integrator-XXXXXXX.okta.com/oauth2/default/.well-known/openid-configuration'
9 ));
10 END;
11* /
BEGIN
*
行でエラーが発生しました 1:
ORA-20001: Create IDP failed while invoking broker. ORA-20001: Broker invocation failed for method POST, endpoint databases/<database_ocid>/ext_auths, request_type idp. ORA-20400:
ORA-06512: "C##CLOUD$SERVICE.DBMS_CLOUD_FUNCTION_ADMIN", 行1399
ORA-20001: Broker invocation failed for method POST, endpoint databases/<database_ocid>/ext_auths, request_type idp. ORA-20400:
ORA-06512: "C##CLOUD$SERVICE.DBMS_CLOUD_FUNCTION_INT", 行5810
ORA-20400:
ORA-06512: "C##CLOUD$SERVICE.DBMS_CLOUD_REQUEST$PDBCS_260617_0", 行7839
ORA-06512: 行1
ORA-06512: "C##CLOUD$SERVICE.DBMS_CLOUD_REQUEST_INTERNAL", 行96
ORA-06512: 行2
ORA-06512: "C##CLOUD$SERVICE.DBMS_CLOUD_FUNCTION_INT", 行5802
ORA-06512: "C##CLOUD$SERVICE.DBMS_CLOUD_FUNCTION_ADMIN", 行1391
ORA-06512: 行2
https://docs.oracle.com/error-help/db/ora-20001/
More Details :
https://docs.oracle.com/error-help/db/ora-20001/
https://docs.oracle.com/error-help/db/ora-06512/
https://docs.oracle.com/error-help/db/ora-20400/
SQL>
discovery_urlにOrg ServerのメタデータURIを指定します。
SQL> BEGIN
2 DBMS_CLOUD_FUNCTION_ADMIN.CREATE_IDP(
3 idp_name => 'OKTA',
4 client_id => '0o**************98',
5 client_secret => 'r2*************************************************',
6 params => JSON_OBJECT(
7 'discovery_url' VALUE
8 'https://integrator-XXXXXXXX.okta.com/.well-known/openid-configuration'
9 ));
10 END;
11* /
PL/SQLプロシージャが正常に完了しました。
SQL>
登録済みのIDPを一覧します。
select * from dba_list_idp;
SQL> select * from dba_list_idp;
IDP_ID IDP_NAME CLIENT_ID PARAMS
_________________________________________________________________________________ ___________ _______________________ ___________________________________________________________________________________
OKTA-f477****-****-****-****-********8a54-1cf6****-****-****-****-********6d96 OKTA 0o****************98 {"discovery_url":"https://integrator-XXXXXXXX.okta.com/.well-known/openid-configu
SQL>
データベース・ユーザーとしてWKSP_APEXDEVを作成します。このユーザーは、Oracle APEXのワークスペースAPEXDEVのデフォルト・パーシング・スキーマとして使用します。
データベース・ユーザーWKSP_APEXDEVには、Oktaのグループsales_dbusersを割り当てます。WKSP_APEXDEVには最低限の権限のみを割り当ています。
create user wksp_apexdev identified globally as 'OKTA_GROUP=sales_dbusers';
alter user wksp_apexdev quota 25m on data;
grant create session to wksp_apexdev;
grant create table, create view, create procedure, create sequence to wksp_apexdev;
SQL> create user wksp_apexdev identified globally as 'OKTA_GROUP=sales_dbusers';
User WKSP_APEXDEVは作成されました。
SQL> alter user wksp_apexdev quota 25m on data;
User WKSP_APEXDEVが変更されました。
SQL> grant create session to wksp_apexdev;
Grantが正常に実行されました。
SQL> grant create table, create view, create procedure, create sequence to wksp_apexdev;
Grantが正常に実行されました。
SQL>
BEGIN
ORDS_ADMIN.ENABLE_SCHEMA(
p_enabled => TRUE,
p_schema => 'WKSP_APEXDEV',
p_url_mapping_type => 'BASE_PATH',
p_url_mapping_pattern => 'apexdev',
p_auto_rest_auth => FALSE);
END;
/
SQL> BEGIN
2 ORDS_ADMIN.ENABLE_SCHEMA(
3 p_enabled => TRUE,
4 p_schema => 'WKSP_APEXDEV',
5 p_url_mapping_type => 'BASE_PATH',
6 p_url_mapping_pattern => 'apexdev',
7 p_auto_rest_auth => FALSE);
8 END;
9* /
PL/SQLプロシージャが正常に完了しました。
SQL>
データベース・ツールへの接続
BEGIN
DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
type => 'OCI_IAM',
force => TRUE
);
END;
/
Oracle APEXへの接続
今度はサインインしたユーザーに、APEXのワークスペースAPEXDEVが割り当たっています。
サインインするワークスペースとしてAPEXDEVを選択します。
























