Using a Procedure to Configure Authentication at Runtime

Configure authentication at runtime by specifying a procedure on the Security page.

To configure authentication at runtime by specifying a procedure:

  1. On the Workspace home page, click the App Builder icon.

  2. Select an application.

    The Application home page appears.

  3. From the Application home page, you can access the Security page in two ways:

    • Edit Application Definition button:
      1. Click Edit Application Definition to the right of the application name.

      2. Click the Security tab.

    • From Shared Components:
      1. Click Shared Components.

      2. Under Security, click Security Attributes.

    The Edit Security Attributes page appears.

  4. Authentication, Configuration Procedure- Enter the name of a procedure which configures authentication at runtime. See the example that follow.

    In applications with an authentication configuration procedure, the authentication scheme cannot be changed using the URL (for example, f?p=100:1:1234:APEX_AUTHENTICATION=myauth).

    The authentication configuration procedure runs at least once per session, on the first request. However, Oracle APEX may need to also call it on other occasions. In such cases, it must set the same values on each call.

  5. Click Apply Changes to save your changes.

Example: procedure my_auth_config

This example is for an application that implements multi-tenancy and supports different variations of Social Sign-In for the tenants. This example uses the domain name in the URL to fetch configuration data (for example, https://cust-01.example.com, https://cust-02.example.com, and so on).

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;

The procedure can change three attributes of the in/out parameter p_conf, all of them are optional:

Note: SET_TENANT_ID Procedure in Oracle APEX API Reference