Monday, October 20, 2014

How to develop JSP Screen for CA IdentityMinder

You can use JSP as a screen.

Our example, we create admin task called "Custom JSP"
  • Primary Object is User
  • Action is View

Select search screen and select Tab "Tabs"

And add JSP, click icon pencil and select JSP files

 If you use weblogic, you can place JSP file at <WebLogic Home>\user_projects\domains\base_domain\applications\iam_im.ear\user_console.war\app\page\jsp

Save this admin task and assign to admin role.

Create JSP file named custom.jsp



<%@page import="com.netegrity.webapp.page.TaskController"%>
<%@page import="com.netegrity.llsdk6.imsapi.managedobject.Account"%>
<%@page import="java.util.Vector"%>
<%@ page import="com.netegrity.llsdk6.imsapi.managedobject.User" %>
<%@ page import="com.netegrity.webapp.UIContext" %>
<%@ page import="com.netegrity.llsdk6.imsapi.*" %>
<%@ page import="com.netegrity.llsdk6.imsapi.provider.UserProvider" %>

<%
      TaskController taskController = (TaskController)request.getAttribute("TaskController");
      User user = (User)taskController.getTaskSession().getSubject();
     
%>

<H1>Hello <%=user.getFriendlyName()%></H1>

Unique Name: <%=user.getUniqueName()%><br/>

List of accounts:<br/>
<%
      Vector<Account> accounts = user.getAccounts();
      for(Account account:accounts){
            out.println("  <li> Account Name:"+account.getUserAccountName()+" Endpoint: "+ account.getEndPointName()+"</li>");           
      }
%>

<%
      User admin = UIContext.getUser(request);
%>

Calling by <%=admin.getFriendlyName()%>



PS. you can see how to set class path form book or CA bookshelf.

This code gets user information and display accounts






The key API is:

1. Get TaskSession to get user Object




TaskController taskController = (TaskController)request.getAttribute("TaskController");
      User user = (User)taskController.getTaskSession().getSubject();



2. UIContext, this API you can call Provider Accessor, for example getUserProvider.



UIContext.getUser(request);


JSP code is open for you to use any java code to access database or web services. You download JSP code here: http://www.caidentitymanagerbook.com/tutorial.html


Wednesday, October 1, 2014

How to create ModifyNoneEvent

The chapter 10 of book CA Identity Manager Volume II, we create dummy event but we use ModifyUserEvent. If you want to create ModifyNoneEvent, here the code:



package com.book.idm.bonus.dummyevent;

import java.util.HashMap;

import com.book.idm.project.utils.TaskSessionUtils;
import com.netegrity.imapi.EventContext;
import com.netegrity.imapi.EventListenerAdapter;
import com.netegrity.ims.events.ModifyObjectEvent;
import com.netegrity.ims.task.TaskSession;
import com.netegrity.llsdk6.imsapi.managedobject.ManagedObject;
import com.netegrity.llsdk6.imsapi.type.ObjectType;

public class CreateEvent extends EventListenerAdapter {
       @Override
       public int after(EventContext evtCtx) throws Exception {
              TaskSession ts = TaskSessionUtils.getTaskSession(evtCtx);
              ManagedObject obj = evtCtx.getManagedObjectProvider(ObjectType.NONE).createManagedObject(new HashMap(), null);
              ModifyObjectEvent event = new ModifyObjectEvent(ts, obj);
              ts.enqueueSecondaryEvent(event);
              return CONTINUE;
       }
}



Please note, only workflow and event listener can generate new event

You can download source code here: http://www.caidentitymanagerbook.com/tutorial.html