Friday, August 29, 2008

Creating a Task Assignment Adapter

There are 2 values that you need to specify in Task assignment adapter.



  • "Adapter return value for Key type" :-

  • should be either user or group

    Please note - both user and group are string values in lowercase. These can not be set as a literal text.

    public String getUserType(){
    return "user";
    }

    public String getGroupType() {
    return "group";
    }


  • "Adapter return value for Key" :-

  • should be a valid username (usr_login) in OIM if the key type is user or else should be a valid group name in OIM if the key type is group.

What does OBSSOCookie Contain ?

Access Server generates a session token with a URL that contains the ObSSOCookie. Single sign-on works when the cookie is used or subsequent authorizations in lieu of prompting the user to supply authorization credentials. When the cookie is generated, part of the cookie is used as an encrypted session token.

The encrypted session token contains the following information:

• The distinguished name (DN) of the authenticated user
• The level of the authentication scheme that authenticated the user
• The IP address of the client to which the cookie was issued
• The time the cookie was originally issued
• The time the cookie was last updated

If the user has not been idle, the cookie is updated at a fixed interval to prevent the session from timing out. The update interval is one-fourth of the length of the idle session timeout parameter.

Unencrypted ObSSOCookie data includes:

• Cookie expiry time
• The domain in which the cookie is valid
• An optional flag that determines if the cookie can only be sent via SSL

Can OBSSO Cookie be read ?

The ObSSOCookie is a secure mechanism for user authentication. When NetPoint generates the cookie, an MD-5 hash is taken of the session token. When the ObSSOCookie is used to authenticate a user, the MD-5 hash is compared with the original cookie contents to be sure no one has tampered with the cookie.

MD-5 is a one-way hash, so it cannot be unencrypted. The Access Server does the comparison by hashing the session token again and comparing the output with the hash of the token already present in the cookie. If the two hashes do not match, the cookie is corrupt. The system relies on the fact that if someone tampers with the session token, the hashes will not match.

Please Note: The single sign-on cookie does not contain user credentials such as username and password.

Thursday, August 28, 2008

MIIS - MA Connector Space Dump

To take a connector space dump from any Management Agent, you may use the csexport.exe utility in the bin folder of the install (Generally - C:\Program Files\Microsoft Identity Integration Server\bin).

Suppose you have a HR Management Agent called HRSHADOW. Use the following command in the bin folder to export the connector space to xml file. Note: You may use different variations of this utility to export connector space with different statuses.

C:\Program Files\Microsoft Identity Integration Server\bin>csexport.exe HRSHADOW HR_CS_DATA.XML

Finding OIM Task Key in a Process Definition

Finding OIM Task Key in a Process Definition in OIM 9.1 is possible through a new API:

Thor.API.Operations.TaskDefinitionOperationsIntf --> getTaskDetails()

Finding an OIM Task Key in a Process Definition in PRE- OIM 9.1 releases can be achieved using the following sql:

String sql = "SELECT m.mil_key FROM mil m, pkg p, tos t WHERE m.mil_name = '" + taskName + "' AND m.TOS_KEY = t.TOS_KEY AND t.PKG_KEY = p.PKG_KEY AND p.pkg_name='"+ processname + "'";

Update Active Directory Password with Code

import java.util.*;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.ldap.*;
import java.util.*;
import java.security.*;

public class ADUpdatePwd

{

private DirContext ldapContext;

private String baseName = ",ou=People,dc=bhatiacorp,dc=com";

private String serverIP = "127.0.0.1";

public void updatePassword(String username, String password) {
try {
String quotedPassword = "\"" + password + "\"";
char unicodePwd[] = quotedPassword.toCharArray();
byte pwdArray[] = new byte[unicodePwd.length * 2];
for (int i = 0; i < unicodePwd.length; i++) {
pwdArray[i * 2 + 1] = (byte) (unicodePwd[i] >>> 8);
pwdArray[i * 2 + 0] = (byte) (unicodePwd[i] & 0xff);
}

ModificationItem[] mods = new ModificationItem[1];
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("UnicodePwd", pwdArray));
ldapContext.modifyAttributes("cn=" + username + baseName, mods);
} catch (Exception e) {
System.out.println("ADUpdatePwd :: Update Password Error :: " + e);

}
}

private void setContext(String ldaphost, String ldapport, String adminID, String adminpassword, boolean useSSL) {
String providerurl = ldaphost + ":" + ldapport;
if (ldapport == "") {
ldapport = "636";
}
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, providerurl);
if (useSSL == true) {
// if SSL is used - use can use ssl enabled ldaphost
// eg. "ldaps://localhost:636"
// else
// eg. "ldap://localhost:636"
env.put(Context.SECURITY_PROTOCOL, "ssl");
}
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, adminID);
env.put(Context.SECURITY_CREDENTIALS, adminpassword);
ldapContext = new InitialDirContext(env);
} catch (Exception ex) {
ex.printStackTrace();
}
}


public ADUpdatePwd() {
try {
setContext("ldaps://serverIP", "636", "CN=Administrator"+baseName, "p@ssw0rd1~", true);
} catch (Exception e) {
System.out.println("ADUpdatePwd :: Error :: " + e);
e.printStackTrace();

}
}

public static void main(String[] args) {
try {
/*
* Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); the keystore that holds trusted root certificates
* System.setProperty("javax.net.ssl.trustStore", "c:\\myCaCerts.jks");
* System.setProperty("javax.net.debug","all");
*/

ADUpdatePwd c = new ADUpdatePwd();
c.updatePassword("Bhatiar", "p@ssw0rd3");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

Thursday, August 21, 2008

OIM Tables Descriptions (9.0.1.1)

The following table lists the purpose of each table within OIM.

Note: Custom Tables are created for user defined Object / Process Forms.

TABLE NAME IN OIMDESCRIPTION OF TABLE
AADList To Define The Administrators For Each Organization And Their Delegated Admin Privileges
AAPTable for storing Resource - Organization level parameter Values
ACPACP - Link Table That Holds Reference To ACT And PKG Tables, Table That Defines The Objects (Resources) Allowed For A Particular Organization
ACSLink Table for Account Table(ACT) and Server Table(SVR)
ACTDefines information about all organizations created through Xellerate
ADJContains the Java API information for the constructor with parameters and method name with parameters chosen for an adapter task of type JAVA, UTILITY, TAME,REMOTE, or XLAPI.
ADLContains the all of the necessary parameters for an adapter task of type IF, ELSE IF,FOR, WHILE, SET, and VARIABLE tasks. These type of tasks are known as LOGICTASKS
ADMData mapping between parameters input/output parameters and source/sink
ADPDefines an adapter created through the Adapter Factory
ADSDatabase,schema and procedure name selections which define a stored procedure adaptertask
ADTDefines a task attached to an adapter
ADUContains the web service and method chosen for a task of the Adapter Factory
ADVAdapter variable table contains variables that have been created for specific adapters.
AFMLinks an adapter with a form
AGSHolds the definition of organization/contact groups
AOAContains the OpenAdapter property file for OpenAdapter
APATo store attestation process administrators
APDTo store attestation Process definition
APTTo store the attestation tasks
ARSContains custom response codes for 'Process Task' Adapters only
ATDTo store entitlement details for each attestation task
ATPDefines input and output parameters for the constructor and method of an adapter taskof type JAVA, UTILITY, TAME, REMOTE, and XLAPI
ATRTo store attestation requests
ATSStores which services or can be ordered by which organizations and which rates apply
AUDDefine the Auditors
AUD_JMS
CRTTrusted Certificate Information
DAVStores the runtime data mappings for 'Entity' & 'Rule Generator' adapters. The data source being an Xellerate form or child table,or a user defined process form.
DEPDependencies among Tasks Within A Workflow Process
DOBData Resource definition consisting of the fully qualified class name of the dataobject
DVTDefines the one to many relationship between Data Resources and Event Handlers (this includes adapters)
EIFExport Import Files. Each row contains one single file used in export/import operation. For export there is only one file
EIHExport Import History. Each row represents one Data Deployment Management session.
EILDB Based lock for export operation. Used to make sure only one user can import at atime. This is currently not managed through data objects
EIOExport Import Objects. Each row represents one object exported/imported
EISSubstitutions used during import process
EMDCore --Email Definition Information Table That Holds The Email Template Definitions
ERRError codes
ESDEncrypted columns not within the bounds of the SDK
EVTDefines event handlers by providing a process and class name. In addition the scheduling time of when the event handler can execute is set to pre (insert, update, delete) or post (insert, update, delete)
FUGList to define the administrators for each user defined object in the 'StructureUtility' form or for each user defined field in the 'User Defined FieldDefinition' form
GPGList to define the (nested) group members of User Group in the 'User Group' form.
GPPList to define the Administrators and their delegated admin rights over a User Group
GPYJoins Properties (PTY) and Groups (UGP).
IEITable where all the imports and exports are defined
LAYTable where the layouts are defined for the various imports and exports
LITImport/export table.
LKULookup definition entries
LKVLookup values
LOBImport/export table.
LOCHolds information about locations
MAPXML MapSchema Information
MAVStores the runtime data mappings for 'Process Task' adapters. The data source being a process form, Location, User, Organization, Process, IT Resource, orLiteral data.
MEVE-mail notification events
MILHolds information about tasks of a process
MSGDefines the user groups that have permission to set the status of a process task.
MSTTask Status And Object Status Information. Holds All The Task Status To Object Status Mappings
OBAObject Authorizer Information
OBDObject Dependencies
OBIObject Instance Information
OBJResource Object definition information.
ODFHolds Object To Process Form Data Flow Mappings.
ODVObject Events/Adapters Information
OIOObject Instance Request Target Organization Information.
OIUObject Instance Request Target User Information.
OODObject Instance Request Target Organization Dependency Information.
ORCThis Entity Holds The Detail On Each Order. This Could Be Considered The Items Section Of An Invoice. This Entity Is The Instance Of A Particular Process
ORDHolds information that is necessary to complete an order regardless of a processbeing ordered
ORFResource Reconciliation Fields
ORRObject Reconciliation Action Rules
OSHTask Instance Assignment History
OSIHolds information about tasks that are created for an order
OSTObject Status Information
OUDObject Instance Request Target User Dependency Information. Holds The Dependency Between Different Resource Instances Provisioned To A User.
OUGList to define the administrators for each Resource
PCQHolds the challenging questions and answers for a user
PDFPackage data flow table holds the data flow relationships between packages
PHOHolds all communication addresses for this contact -- e.g., contact telephone numbers,fax numbers, e-mail, etc.
PKDPackage dependency table holds the dependency relationships between child packages of a parent package
PKGConsists of names and system keys of service processes, which consist of a group ofservices from the TOS table. Defines a Process in Xellerate.
PKHPackage Hierarchy Table Holds The Parent-child Relationships Between Processes
POCStores values for the child tables of the Object/Process form of a resource being provisioned by an access policy
POFPolicy field table holds the field value pairs that constitute the definition of apolicy
POGJoin table between Policy and User Groups, Specifies the groups to whom an access policy will apply.
POLPolicy Table Holds A Policy, Defines An Access Policy In The System
POPPolicy Package Join Table Holds The Packages That A Particular Policy Orders For User, Defines Which Resources Will Be Provisioned Or Denied For A Particular Access Policy.
PRFProcess Reconciliation Field Mappings
PRODefines a process name, scheduling frequency, and priority. A process is made up of oneor more tasks
PTYClient Properties Table
PUGList to define The Administrators And Their Delegated Admin Rights For Each Process.
PWRTable forPassword Rule Policies
PXDTable that holds the list of all Proxies Defined
QUEAdministrative queues definition
QUMAdministrative queue members
RAVStores the runtime data mappings for 'Pre-populate' adapters. The data source being an Xellerate form or child table, or a user defined form
RCAReconciliation Event Organizations Matched
RCBReconciliation Event Invalid Data
RCDReconciliation Event Data
RCEReconciliation Events
RCHReconciliation Event Action History
RCMReconciliation Event Multi-Valued Attribute Data
RCPReconciliation Event Processes Matched
RCUReconciliation Event Users Matched
REPTable that contains all information about reports in the system
REQThis table holds request information
RESThis table is used to stored adapter resources entered by the user.
RGMTable for Response Code Generated Milestones
RGPRules To Apply To A User Group, Defines The Auto-group Membership Rules Attached To AParticular Group.
RGSDefines all known registries. These are used by Web Service tasks in an Adapter to communicate with a web service
RIORequest Organizations Resolved Object Instances
RIURequest Users Resolved Object Instances
RLOThis table contains directory URLs which are referenced by Adapter Factoryjar/class files.
RMLRules To Apply To Task, Defines The Task Assignment Rules Attached To A Process Task.
ROPRules To Apply To An Object-process Pair, Defines The Process Determination Rules Attached To A Resource Object.
RPCReconciliation Event Process Child Table Matches
RPGLink table between Group table and Report Table. Specifies which group has accessto which reports
RPPParameters passed to report.
RPTStores information related to the creation of reports
RPWRules To Apply To A Password Policy, Defines The Policy Determination Rules Attached To A Password Policy.
RQARequest target organization information.
RQCRequest comment information
RQDContains self-registration request data for web admin.
RQERequest administrative queues
RQHRequeststatus history
RQORequest object information.
RQURequest object target user information
RQYRequest Organizations Requiring Resolution
RQZRequest Users Requiring Resolution
RREReconciliation User Matching Rule Elements
RRLReconciliation User Matching Rules
RRTReconciliation User Matching Rule Element Properties
RSCDefines the All The Possible Response Code For A Process Task.
RUEDefines the Elements In A Rule Definition.
RUGList to define the administrators for each Request
RULRule definitions
RVMHolds Recovery Milestones
SCHHolds specific information about an instance of a ask such as its status orscheduled dates
SDCColumn metadata.
SDHMeta-Table Hierarchy.
SDKUser define data object meta data definition
SDLSDK version labels
SDPUser defined column properties
SELData Object Permissions For Groups On A Specified Data object
SITThe SIT table contains information about sites. Sites are subsets of locations.
SPDIT Resource parameter definition
SREDefines Which Pre-populate Rule Generator Will Run For A Field Of User Defined DataObject.
SRPShould be replaced by the rate table from a billing system. Here it holdspecific rates for specific services.
SRSIT Resource - IT Resource join
STAStatus Codes
SUG
SVDIT Resource type definition
SVPIT Resource property definition
SVRIT Resource instance definition
SVSIT Resource - Site Join
TAPHolds parameter values for a task, which is an instantiation of Valid Task,i.e. value for parameter Company Name, etc.
TASHolds instances of Valid Task. Examples of Valid Tasks would be reports, imports, etc. Valid TaskParameters indicate what parameters can be assassigned to an instance of a task, i.e
TDVUsed by event manager/data objects, joins data objects, types of service, and events
TLGKeeps logof SQL transactions.
TMPIndicates which tasks are in a process. Tasks are defined in table; this way, one task can be in many processes.
TODTo do list settings table.
TOSHolds information about a process
TSAStores initialization params (name/value pairs) forscheduler tasks
TSKScheduler task definition information
UDPUser-defined field table
UGPDefines a group of users
UHDUser Policy Profile History Details table
ULNThis table hold UHD allow / deny list
UNM"UnDoMilestone" Feature
UPA
UPA_FIELDSStores changes only for user profile audit history in de-normalized format
UPA_GRP_MEMBERSHIPStores groups membership history in de-normalized format
UPA_RESOURCEStores user profile resource history in de-normalized format
UPA_USRStores user profile history in de-normalized format
UPDUser Policy Profile Details table
UPHUser Policy Profile History table
UPLUser-defined field table
UPPUser Policy Profile table
UPTUser-defined field table
UPYJoins Properties (PTY) and User (USR) tables.
USGThis table stores which users are in which groups.
USRStores all information regarding a user.
UWPWindow sequence, nesting in CarrierBase explorer for each user group.
VTKDefines automation task types such as reports, imports, and exports.
VTPValid Task Parameters. Indicates which parameters can be defined for an instance of a task.
WINWindows table: Windows keys, descriptions, and class names.
XSDThis table holds Xellerate System Data



Reference: Oracle DD