21.4.10 プロシージャを使用した実行時の認証の構成
セキュリティ・ページでプロシージャを指定して、実行時に認証を構成します。
プロシージャを指定して実行時に認証を構成するには:
例21-1 プロシージャmy_auth_config
この例は、マルチテナンシを実装し、テナントに対して様々なソーシャル・サインインをサポートするアプリケーション用です。この例では、URLのドメイン名を使用して構成データをフェッチします(たとえばhttps://cust-01.example.com
、https://cust-02.example.com
など)。
procedure my_auth_config (
p_conf in out nocopy apex_authentication.t_configuration )
is
l_host varchar2(32767) := sys.owa_util.get_cgi_env('HTTP_HOST');
begin
for i in ( select discovery_url,
auth_scheme_name,
credential,
tenant_id
from customer_tenants
where hostname = l_host )
loop
p_conf.authentication_name := i.auth_scheme_name;
p_conf.substitutions := apex_t_varchar2 (
'DISCOVERY_URL' , i.discovery_url,
'CREDENTIAL_STATIC_ID', i.credential );
p_conf.tenant_id := i.tenant_id;
end loop;
end my_auth_config;
このプロシージャは、in/outパラメータp_conf
の3つの属性を変更できます。これらはすべてオプションです。
authentication_name
- アプリケーションで認証スキームの名前を割り当てます。これはデフォルト・スキームのかわりに使用されます。そのスキームに対して「セッションの切替え」を有効にする必要があることに注意してください。substitutions
-apex_t_varchar2
を使用して名前と値のペアを割り当てます。Oracle APEXは、認証スキーム属性の各#NAME#
を、関連付けられた値に置き換えます。組込みソーシャル・サインイン・スキームでは、スキームに構成された資格証明ストアではなく、CREDENTIAL_STATIC_ID
を使用して対応する資格証明ストアを使用します。tenant_id
- セッションでこのテナントIDを設定します(APEX_SESSION.SET_TENANT_ID
を参照)。
親トピック: 認証によるユーザー・アイデンティティの証明