Here's my scenario:
* Our MS Active directory holds my corporate credentials, and is tied in to the WLS LDAP.
* My MSAD login/password is mthompson/xyz123.
* I can sign in to OBIEE as mthompson/xyz123.
* My assigned ORACLE schema/password is hpotter/snape.
* We have established fine-grain security access in the database.
* When I fire up SQL*Plus, connect as hpotter/snape, and execute a query, my select statements are appropriately restricted so that I only see the data I am supposed to see.
* Our OBIEE Connection Pool uses a shared logon.
Situation: Because we have established fine-grain access in the database, I want to turn off the use of the shared login in the connection pool. But if I do that, the connection pool tries to use my LDAP signin credentials (mthompson/xyz123) to connect to the database when I execute a query in OBIEE. I can still sign in to OBIEE just fine, but the database knows nothing of mthompson, so the queries fail.
Here is what I would like to do, or something similar: I want to sign in to OBIEE with my LDAP credentials, just as I do now. When I sign in, I want to run a session variable initialization block that will read a table that contains the Oracle schema that corresponds to my LDAP ID. It would read that table, find mthompson in the LDAP_ID field, and return hpotter from the ORACLE_ID field, storing hpotter in the session variable. I then want to use the value of that session variable as the schema that connects to the database via the connection pool.
Is this possible? I am thinking that perhaps something on the Connection Script tab might do the trick. If so, what SQL do I put in the connection script? And what do I do about a password?
I know that potentially the answer is to enable VPD on the database object, and that's fine. But I can't find any truly comprehensive documentation that walks through EVERY step beyond ticking the VPD checkbox to actually make it work.
So anyway, short version: LDAP_ID ==> ORACLE_ID ==> CONNECTION POOL ==> DATA!!
Thanks!