DB Authenticator is an alternative to the default option of LDAP authenticator for BPM setup.
Following tables are required for the db authenticator setup for BPM Application.
2) Groups
CREATE TABLE GROUPS (G_NAME VARCHAR(200) NOT NULL,
G_DESCRIPTION VARCHAR(1000) NULL) ;
3) Group Members
CREATE TABLE GROUPMEMBERS (G_NAME VARCHAR(200) NOT NULL,
G_MEMBER VARCHAR(200) NOT NULL);
Following tables are required for the db authenticator setup for BPM Application.
1) Users
CREATE TABLE USERS (U_NAME VARCHAR(200) NOT NULL,
U_PASSWORD VARCHAR(50) NOT NULL
,U_DESCRIPTION VARCHAR(1000));
U_PASSWORD VARCHAR(50) NOT NULL
,U_DESCRIPTION VARCHAR(1000));
ALTER TABLE USERS ADD CONSTRAINT PK_USERS PRIMARY KEY (U_NAME);
2) Groups
CREATE TABLE GROUPS (G_NAME VARCHAR(200) NOT NULL,
G_DESCRIPTION VARCHAR(1000) NULL) ;
ALTER TABLE GROUPS ADD CONSTRAINT PK_GROUPS PRIMARY KEY (G_NAME);
3) Group Members
CREATE TABLE GROUPMEMBERS (G_NAME VARCHAR(200) NOT NULL,
G_MEMBER VARCHAR(200) NOT NULL);
ALTER TABLE GROUPMEMBERS ADD
CONSTRAINT PK_GROUPMEMS PRIMARY KEY (G_NAME,G_MEMBER);
CONSTRAINT PK_GROUPMEMS PRIMARY KEY (G_NAME,G_MEMBER);
ALTER TABLE GROUPMEMBERS ADD CONSTRAINT FK1_GROUPMEMBERS
FOREIGN KEY ( G_NAME ) REFERENCES GROUPS (G_NAME) ON DELETE CASCADE;
FOREIGN KEY ( G_NAME ) REFERENCES GROUPS (G_NAME) ON DELETE CASCADE;
Create a DataSource
DB Authenticator needs a datasource in Weblogic. The tables above should be available in the data base connecting through the datasource created.
Create a SQL Authenticator
From the Security Realms > myrealms > Providers. Create a new SQL Authenticator.
Click OK.
The new SQL Authenticator will be listed in the Providers list.
Click on the DBAuthenticator and change the provider specific details
Make sure the datasource name is provided and check the "Plaintext Password Enabled" option selected.
All the other SQL queries can be edited based on the tables name created.You have to edit the provider jar file if you are changing the table names here.The jar file can be downloaded from https://support.us.oracle.com Searching for SQLAuthenticator.
Changes for Worklist Application
1) Copy the jar file to MW_HOME/user_projects/domains/soadomain/lib folder
2) Edit the MW_HOME/user_projects/domains/soadomain/config/fmwconfig/jps-config.xml file.
1) In the section starting with <jpsContext name="default" modify
<serviceInstanceRef ref="idstore.ldap"/>
to
<serviceInstanceRef ref="idstore.custom"/>
2) Within the <serviceInstances>...</serviceInstances> section, add the following
<serviceInstance name="idstore.custom" provider="custom.provider" location="dumb">
<description>Custom Identity Store Service Instance</description>
<property name="idstore.type" value="CUSTOM"/>
<property name="ADF_IM_FACTORY_CLASS" value="org.sample.providers.db.DBIdentityStoreFactory"/>
<property name="DATASOURCE_NAME" value="<datasource_jndi>"/>
</serviceInstance>
3) Within the <serviceProviders>...</serviceProviders> section, add the following
<serviceProvider type="IDENTITY_STORE" name="custom.provider" class="oracle.security.jps.internal.idstore.generic.GenericIdentityStoreProvider"><description>Custom IdStore Provider</description>
</serviceProvider>
Common Errors :a) BPMIdentityService encountered soap error in method invoke with fault "".Ensure that the soap message is properly formed and has all necessary attributes and elements. Contact Oracle Support Services if error is not fixable.ORABPEL-10592We faced this issue because we had an OSSOAsserter layer used to enable the sso for the application. Some how the user email returning from the SSO and the users table was not matching in as the one returning from SSO was capital case and what we had in the db was in small case. We fixed this issue by changing the sql queries shown above in the provider specific section.b) Caused By: ORABPEL-30504Internal error in Verification Service.Internal error in Verification Service for user XXXXX@YYY.COM. lookupUser.Check the underlying exception and correct the error. If the error persists, contact Oracle Support Services.We had to fix the DBUserSearchResponse.java in the dbprovider.jar file by putting the correct case comparison in the sql queries.