cancel
Showing results for 
Search instead for 
Did you mean: 

How to get http user!

Former Member
0 Kudos

Hi all,

I just need to get the http user logged using e.g. the request object (no portal user or R3 user, only the http user currently logged) from a WD.

This is very urgent, I hope in your help.

Vito Palasciano

Accepted Solutions (1)

Accepted Solutions (1)

former_member182372
Active Contributor
0 Kudos

Hi Vito,

to get IUser from servlet use:


com.sap.security.api.IUser sapUser = com.sap.security.api.UMFactory.getAuthenticator().forceLoggedInUser(request, response);

from WD:


IWDClientUser wdUser = WDClientUser.getCurrentUser();
IUser user = wdUser.getSAPUser();

Best regards, Maksim Rashchynski.

Former Member
0 Kudos

from WD:

IWDClientUser wdUser = WDClientUser.getCurrentUser();

IUser user = wdUser.getSAPUser();

Maksin,

are U sure this get the http user? In this case, what is the library to import in order to solve "IUser"?

Thanks a lot.

Vito P.

former_member182372
Active Contributor
0 Kudos

Hi Vito,

Don`t really understand what do you mean - "http user". If your application is running under WAS and is available only for authenticated users, you are dealing with UME user (IUser).

IUser is located (for example) here "C:\Program Files\SAP\JDT\eclipse\plugins\com.sap.security\lib\com.sap.security.api.jar"

Best regards, Maksim Rashchynski.

Former Member
0 Kudos

When an user open a page (that a generate with WD)usually insert a login (http user) and a password. I want to get this login (your code get the user data from SAP Portal, and I haven't a SAP portal, in fact it catch an exception), I just want to take the login with which the user access the page.... e.g. "user", "administrator", etc. etc.

I hope this help to clarify the problem. I hope in a solution. Thanks.

Vito P.

former_member182372
Active Contributor
0 Kudos

Hi Vito,

This code is for using inside WD (views, controlers etc.), not for EP. What kind of exception do you have? Is your WD application is having authentication.mode=true?

Best regards, Maksim Rashchynski.

Former Member
0 Kudos
<b>Here the exception:</b>

java.lang.NullPointerException
	at com.sap.givaudanhome.comp.HomeView.wdDoInit(HomeView.java:106)
	at com.sap.givaudanhome.comp.wdp.InternalHomeView.wdDoInit(InternalHomeView.java:115)
	at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.doInit(DelegatingView.java:61)
	at com.sap.tc.webdynpro.progmodel.controller.Controller.initController(Controller.java:215)
	at com.sap.tc.webdynpro.progmodel.view.View.initController(View.java:274)
	at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:200)
	at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:540)
	at com.sap.tc.webdynpro.progmodel.view.ViewManager.bindRoot(ViewManager.java:422)
	at com.sap.tc.webdynpro.progmodel.view.ViewManager.init(ViewManager.java:130)
	at com.sap.tc.webdynpro.progmodel.view.InterfaceView.initController(InterfaceView.java:41)
	at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:200)
	at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.displayToplevelComponent(ClientComponent.java:134)
	at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.init(ClientApplication.java:392)
	at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.execute(WebDynproMainTask.java:608)
	at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:59)
	at com.sap.tc.webdynpro.clientserver.cal.ClientManager.doProcessing(ClientManager.java:248)
	at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doWebDynproProcessing(DispatcherServlet.java:154)
	at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:116)
	at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doGet(DispatcherServlet.java:48)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
	at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
	at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
	at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
	at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
	at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
	at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
	at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
	at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
	at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
	at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:95)
	at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:159)

<b>I tried to use this:
String loggedInUserName=System.getProperty("user.name");
but this get the wrong information!</b>

How to get the login user? I thinked it was more easy!

Thanks.
former_member182372
Active Contributor
0 Kudos

Hi Vito,

Seems like you application is not having authentication.mode=true and

WDClientUser.getCurrentUser()

returns null in this case and

IUser user = wdUser.getSAPUser();

causes NPE.

Best regards, Maksim Rashchynski.

Former Member
0 Kudos

In thinh that there is a NPE because I haven't a SAP portal. The code try to retrieve the user from SAP Portal and it doesn't find it!

In fact, i want to get the code from the user login.

Thanks.

Vito P.

former_member182372
Active Contributor
0 Kudos

Just check whether authentication.mode property of your WD application is set to true. If it is not - set it, rebuild, redeploy and try again. This piece of code is having absolutely nothing to do with EP.

Former Member
0 Kudos

Where exactly I find the authentication.mode property?

Thanks, Vito

Former Member
0 Kudos

Hi,

this will get you the plain HTML-user, if you are in a Servlet, StrutsAction, etc. :

 String userId = request.getRemoteUser();

From there you can take the userId and get the SAP-user data with UME-api, e.g.:

 IUser iuser = userFactory.getUserByUniqueName(userId);

regards, Astrid

Former Member
0 Kudos

request cannot be resolved, userFactory cannot b resolved... in my Web Dynpro

Where I can find the needed JARs? And is possible to use request object into a WD?

Thanks

Vito

Former Member
0 Kudos

In SAP documentation

http://help.sap.com/saphelp_nw04/helpdata/en/80/45da9619d24b61bb869c31ef3b780a/frameset.htm

I read that it's possible to get the user data with this:

IUserFactory userFactory= UMFactory.getUserFactory();
IUser myUser = userFactory.getUser(request.getUser().getUserId());

The problem is that in the Web Dynpro, <u>the request object cannot be resolved</u>. Any ideas?

It' s very important to solve this issue. Thanks in advanced.

Vito

former_member182372
Active Contributor
0 Kudos

Hi Vito,

How to set authentication.mode property:

1) Open your WD application

2) Go to Application properties

3) click "new". click browse in popup. select "authentication". select "true in "value" dropdown.

4) save metadata.

Best regards, Maksim Rashchynski.

Former Member
0 Kudos

Hi Maksim,

sorry, I'm using NWDS...right click on WD projects and I select "properties". But I don't see "New".

Could you explain me in more details? Thanks.

Vito

former_member182372
Active Contributor
0 Kudos

Open your WD application:

1) expand your WD project

2) expand "Web Dynpro". expand "Applications"

3) select application. double click on it.

4) follow previous instructions.

Former Member
0 Kudos

Thanks Maksim, U're great. Points awarded

I have just another question. I inserted a logoff button in my page in order to logoff the system. Do you known how I can log off?

Thanks,

Vito P.

former_member182372
Active Contributor
0 Kudos

Hi Vito,

There are couple of approaches:

Best regards, Maksim Rashchynski.

Former Member
0 Kudos

Maksim,

your links have been very helpful, problem solved. I would like to give you others points but forum seems doesn't permit it to me.

However thank you very much.

Bye, Vito

former_member182372
Active Contributor
0 Kudos

Hi Vito,

To be able to assign points for resolved topic you need to make it not resolved, assign points and mark it as resolved again ;-).

Best regards, Maksim Rashchynski.

Former Member
0 Kudos

ok, but I don't see the button "not resolved" in this post! Uhmmmm....

Vito

Answers (0)