<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.open-xchange.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=188.99.88.25</id>
	<title>Open-Xchange - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.open-xchange.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=188.99.88.25"/>
	<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Special:Contributions/188.99.88.25"/>
	<updated>2026-08-28T17:35:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=FormLogin&amp;diff=9171</id>
		<title>FormLogin</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=FormLogin&amp;diff=9171"/>
		<updated>2011-10-14T05:11:00Z</updated>

		<summary type="html">&lt;p&gt;188.99.88.25: /* Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= FormLogin =&lt;br /&gt;
&lt;br /&gt;
The goal here is to authenticate a user for the Open-Xchange system from an external system and to safely pass on the received session data to the user´s browser. To do so the external system has to know the user data (username, password) for Open-Xchange in plain text.&lt;br /&gt;
There are three participants in this process: User, Open-Xchange system (&amp;quot;OX&amp;quot;) and External system (&amp;quot;3rd-party&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
1. A ReverseProxy-directive has to be set in the OX-/Loadbalancer-Apache&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
&lt;br /&gt;
 #ReverseProxy to 3rd-party to enable the form-login&lt;br /&gt;
 ProxyPass /forwardname http://3rdpartydomain.tld&lt;br /&gt;
 ProxyPassReverse /forwardname http://3rdpartydomain.tld&lt;br /&gt;
 #enable sslProxy&lt;br /&gt;
 SSLProxyEngine on&lt;br /&gt;
&lt;br /&gt;
please note that &amp;quot;forwardname&amp;quot; is just an example, this could be anything&lt;br /&gt;
&lt;br /&gt;
2. The necessary apache-module needs to be installed for this directive to work&lt;br /&gt;
&lt;br /&gt;
Typically that is done like this:&lt;br /&gt;
 ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load&lt;br /&gt;
&lt;br /&gt;
3. The 3rd-party system accesses the OX-system via the same domainname as the user (e.g. oxdomain.TLD)&lt;br /&gt;
&lt;br /&gt;
4. the 3rd-party system is on the ip-check-whitelist of the OX-system as described here (in &amp;quot;10.2.20. noipcheck.cnf&amp;quot;):&lt;br /&gt;
http://software.open-xchange.com/OX6/doc/OX6-Installation-and-Administration.pdf&lt;br /&gt;
&lt;br /&gt;
Also the exact parameter-names for the FormLogin can be found here:&lt;br /&gt;
http://oxpedia.org/wiki/index.php?title=HTTP_API#Form_Login_.28since_6.20.29&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
This diagram shows the complete process. Just read it naturally from top to bottom and you have the chronological order things need to happen in.&lt;br /&gt;
&lt;br /&gt;
[[File:formLoginDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
== Example for the login-form ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot;  &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
 &amp;lt;head&amp;gt;&lt;br /&gt;
 &amp;lt;meta http-equiv=&amp;quot;content-type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;meta http-equiv=&amp;quot;cache-control&amp;quot; content=&amp;quot;no-cache&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;title&amp;gt;Login&amp;lt;/title&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
 function uuid() {&lt;br /&gt;
    function hex(len, x) {&lt;br /&gt;
        if (x === undefined) x = Math.random();&lt;br /&gt;
        var s = new Array(len);&lt;br /&gt;
        for (var i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
            x *= 16;&lt;br /&gt;
            var digit = x &amp;amp; 15;&lt;br /&gt;
            s[i] = digit + (digit &amp;lt; 10 ? 48 : 87); // &#039;0&#039; and &#039;a&#039; - 10&lt;br /&gt;
        }&lt;br /&gt;
        return String.fromCharCode.apply(String, s);&lt;br /&gt;
    }&lt;br /&gt;
    return [hex(8), &amp;quot;-&amp;quot;, hex(4), &amp;quot;-4&amp;quot;, hex(3), &amp;quot;-&amp;quot;, hex(4, 0.5 + Math.random() / 4), &amp;quot;-&amp;quot;, hex(12)].join(&amp;quot;&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;body&amp;gt;&lt;br /&gt;
 &amp;lt;form action=&amp;quot;/ajax/login?action=formlogin&amp;amp;authId=&amp;quot; method=&amp;quot;post&amp;quot;  onSubmit=&amp;quot;this.action += uuid();&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;label for=&amp;quot;login&amp;quot;&amp;gt;Username: &amp;lt;/label&amp;gt;&lt;br /&gt;
 &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;login&amp;quot; id=&amp;quot;login&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;label for=&amp;quot;password&amp;quot;&amp;gt;Password:  &amp;lt;/label&amp;gt;&lt;br /&gt;
 &amp;lt;input type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; id=&amp;quot;password&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Login&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;client&amp;quot;   value=&amp;quot;com.openexchange.ox.gui.dhtml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;version&amp;quot; value=&amp;quot;Form Login&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;autologin&amp;quot; value=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;uiWebPath&amp;quot; value=&amp;quot;/ox6/index.html&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;/form&amp;gt;&lt;br /&gt;
 &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;/div&gt;</summary>
		<author><name>188.99.88.25</name></author>
	</entry>
</feed>