cancel
Showing results for 
Search instead for 
Did you mean: 

how to get currently loggedin portal user through java code

former_member219446
Participant
0 Kudos

Hi All,

could you please help me regarding ....

How to get the currentlly loggedin portal user using java application.

i am using "com.sap.security.api.IUser sapUser=com.sap.security.api.UMFactory.getAuthenticator().getLoggedInUser();"

but getting the guest as user even i logged in to portal.

The portal server is remote .

Thanks & Regards,

Srinivas.

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member

Have you enabled SSO between the portal and the back-end server? If you haven't, and have enabled guest login on the back-end server, this may explain the behavior you're seeing.

If you have SSO enabled between the two servers, then it should 'just work'. However, be warned: if you do any sort of user mapping between the two servers, you'll see the user id of the user in the back-end system, not the portal system, and there is no direct way to retrieve user details of the user from the portal perspective.

If you've configured the two environments to use the same authentication source, then you'll be fine.

former_member185086
Active Contributor
0 Kudos

Hi

Use the following code after declare the uses type of com.sap.security.api

IWDMessageManager messageManager= wdThis.wdGetAPI().getComponent().getMessageManager();
		WDClientUser.forceLoggedInClientUser();
		String user_id= null;
		String first_Name= null;
		String last_Name= null;
		String roleName= null;
		boolean isAuthroziedToApprove= false;
		IRole role= null;
		try
		{
			IWDClientUser currentUser= WDClientUser.getCurrentUser();
			IUser sapCurrentUser= currentUser.getSAPUser();
			if (sapCurrentUser != null)
			{
				Iterator rit= null;
				rit= sapCurrentUser.getRoles(true);
				IRoleFactory rfact= UMFactory.getRoleFactory();
				ArrayList userRoles= null;
				userRoles= new ArrayList();
				while (rit.hasNext())
				{

					roleName= (String) rit.next();
					role= rfact.getRole(roleName);
					userRoles.add(new String(role.getDisplayName()));
					//Setting user details into context
(isAuthroziedToApprove);
					wdContext.currentPortalUserDetailsElement().setUserId(sapCurrentUser.getUniqueName());
					wdContext.currentPortalUserDetailsElement().setFirstName(sapCurrentUser.getFirstName());
					wdContext.currentPortalUserDetailsElement().setLastName(sapCurrentUser.getLastName());
				}
				wdContext.currentPortalUserDetailsElement().setUserRoles(userRoles);
			}
		}
		catch (WDUMException e)
		{
		
			messageManager.reportException(e.getLocalizedMessage(), false);
		}
		catch (UMException e)
		{
			
		}

BR

Satish Kumar

former_member219446
Participant
0 Kudos

Hi satish,

Thanks for your response.

But i want to get the loggedinuser details from my java application(internally called from EJB) not in webdynpro.

when i use this com.sap.security.api.IUser sapUser=com.sap.security.api.UMFactory.getAuthenticator().getLoggedInUser(); i am getting the Guest as user even i logged in portal,

Thanks & Regards,

Srinivas.

Former Member
0 Kudos

Hi

Try below code :

userId = new LoggedInUser().getLoggedInUser(request, response);

LoggedInUser

-


public String getLoggedInUser(
		HttpServletRequest request,
		HttpServletResponse response)
		throws ServletException, IOException {
		IUser user =
			UMFactory.getAuthenticator().getLoggedInUser(request, response);
		if (null == user) {
			//response.sendError(401); //401 = Unauthorised
			UMFactory.getAuthenticator().forceLoggedInUser(request, response);
			response.sendRedirect("abc.do");
		}
		String userId = request.getRemoteUser();
		return userId;

	}

Thanks