It's all about the answers!

Ask a question

Is there an equivalent of IImpersonationService for plain java API?


2
1
Michele Pegoraro (1.8k1210397) | asked Jan 29 '14, 9:39 a.m.
 Hi,
is possible to impersonate other user with plain java API as it is possible on server side?

I'd like to perform some action from inside a build and I don't like to pass user/password information in order to login to the server. I'd prefer to use a single technical user that can impersonate other users.

Thanks,
Michele.

3 answers



permanent link
Ralph Schoon (54.3k13641) | answered Feb 10 '14, 4:33 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
I am not sure I understand the question. If you run something in a build, it is run in the context of the user running the build - which is usually a technical user.. You can also pass arguments like another user ID or password, or read them (I think) from a password file to use another user. However, there is no way to act as another user I am aware of.

permanent link
Michele Pegoraro (1.8k1210397) | answered Feb 10 '14, 9:19 a.m.
 Ralph,
I'd like to impersonate other users using a technical JazzAdmin user (as I can do on server side) because otherwise I would have to create password files for each user on the compile machine in order to use on custom tasks (I don't like to put password directly in build properties for security reason).

Thanks,
Michele. 

permanent link
SEC Servizi (92122040) | answered Nov 19 '14, 4:21 a.m.
com.ibm.team.repository.service.IImpersonationService is not available as Plain Java Client API. Anyway, you could try to add it from RTC SDK to your client classpath and then to get it as:
IImpersonationService impersonationService = (IImpersonationService) ((IClientLibraryContext) repo).getServiceInterface(IImpersonationService.class);
Maybe... :)

Comments
Michele Pegoraro commented Nov 19 '14, 4:28 a.m.

Does it works? Have you tried? Generally I've always had problems when I tried to mix Plain API and SDK, but if it works without side effects I will give a try :-)  


SEC Servizi commented Apr 12, 8:05 a.m. | edited Apr 12, 8:27 a.m.

Well, impersonating users works but you cannot just invoking  IImpersonationService from a plain Java client due to:

com.ibm.team.repository.common.TeamRepositoryException: CRJAZ0055E The com.ibm.team.repository.service.IImpersonationService service is not accessible remotely.
at com.ibm.team.repository.client.internal.ServiceInterfaceProxy.validateServiceCall(ServiceInterfaceProxy.java:285)
at com.ibm.team.repository.client.internal.ServiceInterfaceProxy.invoke(ServiceInterfaceProxy.java:109)
at com.sun.proxy.$Proxy25.runAs(Unknown Source)
You have to do some work:
  1. a
Sure, it's a GIANT hack but it works! :)
Cheers.

Your answer


Register or to post your answer.