Hello,
In the Ticketed Authentication, a content server ticket is used instead of the user password for authentication. In fact, Content server generates tickets usually start with a DM_TICKET qualifier. Below, two ways to get the ticket from content server: API instructions or DFC programming. There is a time limit to use the login ticket (by default 30 minutes), after this time a login using the ticket will fail.
API instructions
Connection to DA or dqMan with an ADMIN/SUPERUSER user account in order to execute getlogin API instruction. In the below example, there is the generation of an 2nd temporary password for the nominative account ozveren1 : “DM_TICKET=T0JKIE5VTEwgMAoxMwp2ZXJzaW9uIElOVCBTIDA[…]vY3RnRmc9PQo=”
API>getlogin,c,ozveren1 ... DM_TICKET=T0JKIE5VTEwgMAoxMwp2ZXJzaW9uIElOVCBTIDA[...]vY3RnRmc9PQo= API> quit Bye
DFC programming
String superUser = "dmadmin"; String superUserPassword = "dmadmin"; String repoName = "mydocbase"; String username = "hozveren1"; IDfSessionManager sessMgr = null; IDfSession superUserSession = null; IDfSessionManager userSm = null; IDfSession userSess = null;
try{ // ----- SUPER USER --- Creates a new session manager instance. { IDfClientX clientX = new DfClientX(); IDfClient localClient = clientX.getLocalClient(); sessMgr = localClient.newSessionManager(); } // Adds a new identity to the session manager. { IDfClientX clientX = new DfClientX(); IDfLoginInfo li = clientX.getLoginInfo(); li.setUser(superUser); li.setPassword(superUserPassword); // check if session manager already has an identity. if yes, remove it. if (sessMgr.hasIdentity(repoName)){ sessMgr.clearIdentity(repoName); } sessMgr.setIdentity(repoName, li); } // ----- GENERATION of USER TICKET superUserSession = sessMgr.getSession(repoName); String userTicket = superUserSession.getLoginTicketForUser(username); System.out.println("User ticket: " + userTicket);
// ----- USER TICKET --- Creates a new session manager instance. { IDfClientX clientX = new DfClientX(); IDfClient localClient = clientX.getLocalClient(); userSm = localClient.newSessionManager(); } // Adds a new identity to the session manager. { IDfClientX clientX = new DfClientX(); IDfLoginInfo li = clientX.getLoginInfo(); li.setUser(username); li.setPassword(userTicket); // check if session manager already has an identity. if yes, remove it. if (userSm.hasIdentity(repoName)){ userSm.clearIdentity(repoName); } sm.setIdentity(repoName, li); } userSess = userSm.getSession(repoName); System.out.println("Got user session: " + userSess.getSessionId());
}finally{ if((userSm != null) && (userSess != null)){ userSm.release(userSess); } if((sessMgr != null) && (superUserSession != null)){ sessMgr.release(superUserSession); } }
That’s all!!!
Huseyin OZVEREN