<div dir="ltr">Oh,Thanks for your detailed answers,I think I know how to resolve my problem.<div><br></div><div>        Thanks again!</div><div><br></div><div>Best Regards!</div></div><div class="gmail_extra"><br><div class="gmail_quote">2014-12-05 0:19 GMT+08:00 Alexander Wels <span dir="ltr">&lt;<a href="mailto:awels@redhat.com" target="_blank">awels@redhat.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Thursday, December 04, 2014 10:57:43 AM 王成俊 wrote:<br>
&gt; I&#39;m sorry I did not explain my needs clearly.<br>
&gt;<br>
&gt; In my case,I want to redesign the WebAdmin login GUI and add some<br>
&gt; javascript in my WebAdmin login page to do many own logic.At present I<br>
&gt; don&#39;t know how to add javascript in gwt framework,so I have to make a<br>
&gt; servlet to alternative the original WebAdmin login GUI.<br>
&gt;<br>
&gt; After admin user log in the WebAdmin Portal through my servlet,UIPlugin<br>
&gt; which use restapi to get data in the portal cannot automate get the<br>
&gt; user&#39;s certificate,the uiplugin show me a prompt to input the username and<br>
&gt; password.<br>
&gt;<br>
<br>
</span>Okay so if I understand correctly there are 2 parts to your issue.<br>
<br>
1. You want an alternate login screen for which you wrote your own servlet<br>
that displays your login screen.<br>
2. You have a UI plugin that needs the rest api credentials to make calls to<br>
the REST api.<br>
<br>
- For 1, A consequence of what you are describing to me, is that you will need<br>
to compile and package ovirt with your custom extension yourself. Which may<br>
potentially break if we ever make changes to the code. I highly suggest you<br>
keep an eye out for the SSO capability we are working on in 3.6. But for now I<br>
guess you can do the following, which can and probably will break with each<br>
version of ovirt.<br>
<br>
The source code for the login window in webadmin is in:<br>
rontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/login/presenter<br>
and view. You can alter it whatever way you want to do your custom stuff.<br>
However this requires you to know GWT.<br>
<br>
If you want to do the servlet approach:<br>
 look in<br>
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GenericApiGWTServiceImpl.java<br>
at the login and logOff methods. Do something similar to that in your servlet<br>
when you submit the form from your servlet. After you login, you can redirect<br>
the browser to the webadmin URL, at that point it should recognize you are<br>
logged in and show the webadmin while bypassing the original login screen.<br>
This will work if you servlet lives in the same context as the webadmin<br>
servlet.<br>
<br>
Again, both of these approached will probably work, but depend on internal<br>
code which can and will change over time, so you will have to maintain your<br>
code to match. When the SSO capability is fully rolled out you should be able<br>
to write your own login screen that doesn&#39;t depend on internal structures<br>
which will make maintaining that much easier for you. I believe this is<br>
scheduled for the 3.6 timeframe.<br>
<br>
- For 2, in your UI plugin, you need to hook into the RestApiSessionAcquired<br>
event. Its use is described here [1]. You can pass the session id in that<br>
event as a header to your request to the REST api and that makes the requests<br>
succeed. Examples of code that do that are available in the sample UI plugins<br>
on that page.<br>
<br>
Alexander<br>
<br>
[1] <a href="http://www.ovirt.org/Features/UIPlugins#REST_API_integration" target="_blank">http://www.ovirt.org/Features/UIPlugins#REST_API_integration</a><br>
<div class="HOEnZb"><div class="h5"><br>
&gt; I am looking forward to your guide!<br>
&gt;<br>
&gt;         Thanks!<br>
&gt;<br>
&gt; Best regards!<br>
&gt;<br>
&gt; 2014-12-03 1:04 GMT+08:00 Vojtech Szocs &lt;<a href="mailto:vszocs@redhat.com">vszocs@redhat.com</a>&gt;:<br>
&gt; &gt; ----- Original Message -----<br>
&gt; &gt;<br>
&gt; &gt; &gt; From: &quot;Alexander Wels&quot; &lt;<a href="mailto:awels@redhat.com">awels@redhat.com</a>&gt;<br>
&gt; &gt; &gt; To: &quot;王成俊&quot; &lt;<a href="mailto:wcj2007@gmail.com">wcj2007@gmail.com</a>&gt;<br>
&gt; &gt; &gt; Cc: <a href="mailto:devel@ovirt.org">devel@ovirt.org</a><br>
&gt; &gt; &gt; Sent: Tuesday, December 2, 2014 1:59:21 PM<br>
&gt; &gt; &gt; Subject: Re: [ovirt-devel] How To Auto Set oVirt RESTApi Session?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; On Tuesday, December 02, 2014 09:45:49 AM 王成俊 wrote:<br>
&gt; &gt; &gt; &gt; Hi,awels:<br>
&gt; &gt; &gt; &gt;      Thanks for your reply!<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;      I make this servlet to run the backend action which<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; names &quot;LoginAdminUser&quot;, because I want to check admin log in with<br>
&gt; &gt; &gt; &gt; it,so<br>
&gt; &gt; &gt; &gt; that my engine no need to log in through engine&#39;s loginpopupview.<br>
&gt; &gt;<br>
&gt; &gt; Hm, so you&#39;re trying to automate WebAdmin GUI login? Can you please<br>
&gt; &gt; explain your use case without any technical (servlet etc.) details?<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt;      But when I log in through my servlet,the restapi can not get the<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; user&#39;s certificate.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;      Can you tell me how to set and resume the restapi session in my<br>
&gt; &gt;<br>
&gt; &gt; case?<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt;      Thanks!<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Best Regards!<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; You can login to the REST api using standard http connection techniques.<br>
&gt; &gt;<br>
&gt; &gt; For<br>
&gt; &gt;<br>
&gt; &gt; &gt; instance basic auth you can login doing the following:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; http://&lt;user&gt;%40&lt;domain&gt;:&lt;password&gt;@&lt;engine_host&gt;/ovirt-engine/api<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Will list the available REST api.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; But I am still not clear on what you are trying to do. Are you trying to<br>
&gt; &gt; &gt; write<br>
&gt; &gt; &gt; your own external servlet, that calls the REST api to do things for you?<br>
&gt; &gt;<br>
&gt; &gt; Or<br>
&gt; &gt;<br>
&gt; &gt; &gt; are you trying to write a servlet that lives inside the context of the<br>
&gt; &gt;<br>
&gt; &gt; engine<br>
&gt; &gt;<br>
&gt; &gt; &gt; and implements a new action?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Also please reply all, so we can keep the discussion on the mailing list<br>
&gt; &gt;<br>
&gt; &gt; so<br>
&gt; &gt;<br>
&gt; &gt; &gt; other people can find it in the future.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Alexander<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; 2014-12-02 5:42 GMT+08:00 Alexander Wels &lt;<a href="mailto:awels@redhat.com">awels@redhat.com</a>&gt;:<br>
&gt; &gt; &gt; &gt; &gt; On Monday, December 01, 2014 04:56:04 PM 王成俊 wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt; Dear Sir:<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;          I am a new one in studing ovirt engine.Now,I have a<br>
&gt; &gt;<br>
&gt; &gt; Servlet in<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; org.ovirt.engine.ui.frontend.server.gwt package.<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;          I want to call<br>
&gt; &gt;<br>
&gt; &gt; *Frontend.getInstance().getLoginHandler().**onLoginSuccess(userName,<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; password, domain)* to set session for restapi in this servlet.<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;          But when I visit this servlet,it occur to show me an<br>
&gt; &gt; &gt; &gt; &gt; &gt;          error<br>
&gt; &gt; &gt; &gt; &gt; &gt;          which<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; just like &quot;*JBWEB000071: root cause<br>
&gt; &gt;<br>
&gt; &gt; java.lang.ClassNotFoundException:<br>
&gt; &gt; &gt; &gt; &gt; &gt; org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback from<br>
&gt; &gt;<br>
&gt; &gt; [Module<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &amp;quot;deployment.engine.ear.webadmin.war:main&amp;quot; from Service<br>
&gt; &gt;<br>
&gt; &gt; Module<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; Loader]*&quot;. I found that this error is occured by calling*<br>
&gt; &gt; &gt; &gt; &gt; &gt; Frontend.getInstance()*.<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;          Can you tell me how to resolve this problem or a new way<br>
&gt; &gt;<br>
&gt; &gt; to<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;          set<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; and resume restapi session in a servlet package of<br>
&gt; &gt; &gt; &gt; &gt; &gt; org.ovirt.engine.ui.front.server.gwt like the<br>
&gt; &gt;<br>
&gt; &gt; RestApiSessionManager in<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; org.ovirt.engine.ui.webadmin.plugin.restapi package?<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;            thanks!<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; Best Regards!<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Hi,<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; The problem you are experiencing is the fact the<br>
&gt; &gt;<br>
&gt; &gt; Frontend.getInstance()<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; is<br>
&gt; &gt; &gt; &gt; &gt; a<br>
&gt; &gt; &gt; &gt; &gt; frontend (client, which get compiled to javascript) class, and the<br>
&gt; &gt; &gt; &gt; &gt; servlet<br>
&gt; &gt; &gt; &gt; &gt; is<br>
&gt; &gt; &gt; &gt; &gt; on the server side where this class is not defined (as it is<br>
&gt; &gt; &gt; &gt; &gt; frontend<br>
&gt; &gt; &gt; &gt; &gt; only).<br>
&gt; &gt; &gt; &gt; &gt; Maybe if you could explain what you are trying to do we could assist<br>
&gt; &gt; &gt; &gt; &gt; better.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; We have a mechanism of getting the REST api session on the front end<br>
&gt; &gt;<br>
&gt; &gt; when<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; you<br>
&gt; &gt; &gt; &gt; &gt; log in. On the backend you don&#39;t really need that, since you are on<br>
&gt; &gt;<br>
&gt; &gt; the<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; backend. So your question sort of confuses me at this point.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Alexander<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; Devel mailing list<br>
&gt; &gt; &gt; <a href="mailto:Devel@ovirt.org">Devel@ovirt.org</a><br>
&gt; &gt; &gt; <a href="http://lists.ovirt.org/mailman/listinfo/devel" target="_blank">http://lists.ovirt.org/mailman/listinfo/devel</a><br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><strong><font color="#009900">用心体会,生活本来有滋有味!</font></strong></div>
</div>