<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/index.php?action=history&amp;feed=atom&amp;title=AuthIntegration</id>
		<title>AuthIntegration - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/index.php?action=history&amp;feed=atom&amp;title=AuthIntegration"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=AuthIntegration&amp;action=history"/>
		<updated>2026-05-16T00:19:48Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/index.php?title=AuthIntegration&amp;diff=53824&amp;oldid=prev</id>
		<title>Manni at 12:26, 4 December 2023</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=AuthIntegration&amp;diff=53824&amp;oldid=prev"/>
				<updated>2023-12-04T12:26:51Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 12:26, 4 December 2023&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{{Quicklinks|AuthIntegration}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Introduction==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Introduction==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Manni</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=AuthIntegration&amp;diff=28671&amp;oldid=prev</id>
		<title>MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=AuthIntegration&amp;diff=28671&amp;oldid=prev"/>
				<updated>2012-03-04T06:14:02Z</updated>
		
		<summary type="html">&lt;p&gt;Robot: Replacing &amp;#039;OpenSim&amp;#039; to &amp;#039;OpenSimulator&amp;#039;, which is the precise name&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 06:14, 4 March 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Introduction==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Introduction==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There are various ways to integrate OpenSimulator with other authentication systems. The first is to create a system that will inject a &amp;quot;web login key&amp;quot; that a suitable client can use for one-time authentication. The second is to call the AllowSetPassword method on the OpenSimulator ROBUST authentication service to directly pass in a plain text string that &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;OpenSim &lt;/del&gt;will suitable hash and store. The third is to create an OpenSimulator password hash and salt externally and set these either directly in the database or via the ROBUST authentication service.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There are various ways to integrate OpenSimulator with other authentication systems. The first is to create a system that will inject a &amp;quot;web login key&amp;quot; that a suitable client can use for one-time authentication. The second is to call the AllowSetPassword method on the OpenSimulator ROBUST authentication service to directly pass in a plain text string that &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;OpenSimulator &lt;/ins&gt;will suitable hash and store. The third is to create an OpenSimulator password hash and salt externally and set these either directly in the database or via the ROBUST authentication service.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Web login key ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Web login key ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=AuthIntegration&amp;diff=27883&amp;oldid=prev</id>
		<title>MakoBot: Robot: Cosmetic changes</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=AuthIntegration&amp;diff=27883&amp;oldid=prev"/>
				<updated>2012-03-04T01:59:45Z</updated>
		
		<summary type="html">&lt;p&gt;Robot: Cosmetic changes&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 01:59, 4 March 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Introduction==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Introduction==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There are various ways to integrate OpenSimulator with other authentication systems. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;The first is to create a system that will inject a &amp;quot;web login key&amp;quot; that a suitable client can use for one-time authentication. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;The second is to call the AllowSetPassword method on the OpenSimulator ROBUST authentication service to directly pass in a plain text string that OpenSim will suitable hash and store. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;The third is to create an OpenSimulator password hash and salt externally and set these either directly in the database or via the ROBUST authentication service.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There are various ways to integrate OpenSimulator with other authentication systems. The first is to create a system that will inject a &amp;quot;web login key&amp;quot; that a suitable client can use for one-time authentication. The second is to call the AllowSetPassword method on the OpenSimulator ROBUST authentication service to directly pass in a plain text string that OpenSim will suitable hash and store. The third is to create an OpenSimulator password hash and salt externally and set these either directly in the database or via the ROBUST authentication service.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Web login key ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Web login key ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Unfortunately, this section is incomplete. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;If you can read code, then you'll want to look at the OpenSim.Services.AuthenticationService package in OpenSimulator. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;This will show you how the web login key is read from the database and used against client input. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;If you want to use this service then please also ask on opensim-dev, which will provide impetus to flesh out this section further&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Unfortunately, this section is incomplete. If you can read code, then you'll want to look at the OpenSim.Services.AuthenticationService package in OpenSimulator. This will show you how the web login key is read from the database and used against client input. If you want to use this service then please also ask on opensim-dev, which will provide impetus to flesh out this section further&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Set Password Directly ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Set Password Directly ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There is an option to allow an external SetPassword request to the OpenSimulator authentication service. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;This can only be enabled if you're absolutely sure of the security implications (i.e. nobody untrustworthy will be able to call it). &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;Unfortunately, it is only available if on the ROBUST authentication service if you're running a grid. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;It is not currently available on standalone.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There is an option to allow an external SetPassword request to the OpenSimulator authentication service. This can only be enabled if you're absolutely sure of the security implications (i.e. nobody untrustworthy will be able to call it). Unfortunately, it is only available if on the ROBUST authentication service if you're running a grid. It is not currently available on standalone.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;To enable the SetPassword method, set AllowSetPassword = true in the [AuthenticationService] section of Robust.ini.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;To enable the SetPassword method, set AllowSetPassword = true in the [AuthenticationService] section of Robust.ini.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 28:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 28:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Creating an OpenSimulator compatible password externally ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Creating an OpenSimulator compatible password externally ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;OpenSimulator passwords are salted and hashed. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;For historical reasons, more work is done than is really necessary. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;You can see the OpenSimulator code for this in the AuthenticationServiceBase.SetPassword() method in the OpenSim.Services.AuthenticationService package. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;The important snippet is reproduced below.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;OpenSimulator passwords are salted and hashed. For historical reasons, more work is done than is really necessary. You can see the OpenSimulator code for this in the AuthenticationServiceBase.SetPassword() method in the OpenSim.Services.AuthenticationService package. The important snippet is reproduced below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; public virtual bool SetPassword(UUID principalID, string password)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; public virtual bool SetPassword(UUID principalID, string password)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 38:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first line creates a salt by hashing a random UUID. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;Please note that this produces a salt which is a UUID but one that doesn't contain dashes (-).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first line creates a salt by hashing a random UUID. Please note that this produces a salt which is a UUID but one that doesn't contain dashes (-).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The second line hashes the plain text password (e.g. &amp;quot;123456&amp;quot;), appends a colon, and then appends the salt. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;It then hashes the whole thing again (somebody sure likes their hash) to produce a final password hash.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The second line hashes the plain text password (e.g. &amp;quot;123456&amp;quot;), appends a colon, and then appends the salt. It then hashes the whole thing again (somebody sure likes their hash) to produce a final password hash.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The salt and hash are then stored in the passwordSalt and passwordHash fields of the auth table in OpenSimulator.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The salt and hash are then stored in the passwordSalt and passwordHash fields of the auth table in OpenSimulator.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 54:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 54:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== ROBUST authentication service call ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== ROBUST authentication service call ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Alternatively, if ROBUST is running and one has direct access to the instance running the Authentication service then you can call the SetAuthInfo method to store these fields. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;Unfortunately, this mechanism is not currently available for standalone instances.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Alternatively, if ROBUST is running and one has direct access to the instance running the Authentication service then you can call the SetAuthInfo method to store these fields. Unfortunately, this mechanism is not currently available for standalone instances.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;To enable the SetAuthInfo method, set AllowSetAuthInfo = true in the [AuthenticationService] section of Robust.ini.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;To enable the SetAuthInfo method, set AllowSetAuthInfo = true in the [AuthenticationService] section of Robust.ini.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=AuthIntegration&amp;diff=26872&amp;oldid=prev</id>
		<title>Justincc: Created page with &quot;==Introduction==  There are various ways to integrate OpenSimulator with other authentication systems.  The first is to create a system that will inject a &quot;web login key&quot; that a ...&quot;</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=AuthIntegration&amp;diff=26872&amp;oldid=prev"/>
				<updated>2011-12-19T23:46:24Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Introduction==  There are various ways to integrate OpenSimulator with other authentication systems.  The first is to create a system that will inject a &amp;quot;web login key&amp;quot; that a ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
There are various ways to integrate OpenSimulator with other authentication systems.  The first is to create a system that will inject a &amp;quot;web login key&amp;quot; that a suitable client can use for one-time authentication.  The second is to call the AllowSetPassword method on the OpenSimulator ROBUST authentication service to directly pass in a plain text string that OpenSim will suitable hash and store.  The third is to create an OpenSimulator password hash and salt externally and set these either directly in the database or via the ROBUST authentication service.&lt;br /&gt;
&lt;br /&gt;
== Web login key ==&lt;br /&gt;
&lt;br /&gt;
Unfortunately, this section is incomplete.  If you can read code, then you'll want to look at the OpenSim.Services.AuthenticationService package in OpenSimulator.  This will show you how the web login key is read from the database and used against client input.  If you want to use this service then please also ask on opensim-dev, which will provide impetus to flesh out this section further&lt;br /&gt;
&lt;br /&gt;
== Set Password Directly ==&lt;br /&gt;
&lt;br /&gt;
There is an option to allow an external SetPassword request to the OpenSimulator authentication service.  This can only be enabled if you're absolutely sure of the security implications (i.e. nobody untrustworthy will be able to call it).  Unfortunately, it is only available if on the ROBUST authentication service if you're running a grid.  It is not currently available on standalone.&lt;br /&gt;
&lt;br /&gt;
To enable the SetPassword method, set AllowSetPassword = true in the [AuthenticationService] section of Robust.ini.&lt;br /&gt;
&lt;br /&gt;
Then, as long as you know the UUID of the user (which is not so helpful if you want to create a user from scratch), you can use python code like the following to set a password.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 &lt;br /&gt;
 import httplib&lt;br /&gt;
 import urllib&lt;br /&gt;
 &lt;br /&gt;
 params = urllib.urlencode({'METHOD':'setpassword', 'PRINCIPAL' : 'dd5b77f8-bf88-45ac-aace-35bd76426c81', 'PASSWORD':'letmein'})&lt;br /&gt;
 conn = httplib.HTTPConnection(&amp;quot;localhost&amp;quot;, 8003);&lt;br /&gt;
 conn.request(&amp;quot;POST&amp;quot;, &amp;quot;/auth/plain&amp;quot;, params)&lt;br /&gt;
 response = conn.getresponse()&lt;br /&gt;
 print response.read();&lt;br /&gt;
&lt;br /&gt;
== Creating an OpenSimulator compatible password externally ==&lt;br /&gt;
&lt;br /&gt;
OpenSimulator passwords are salted and hashed.  For historical reasons, more work is done than is really necessary.  You can see the OpenSimulator code for this in the AuthenticationServiceBase.SetPassword() method in the OpenSim.Services.AuthenticationService package.  The important snippet is reproduced below.&lt;br /&gt;
&lt;br /&gt;
 public virtual bool SetPassword(UUID principalID, string password)&lt;br /&gt;
 {&lt;br /&gt;
     string passwordSalt = Util.Md5Hash(UUID.Random().ToString());&lt;br /&gt;
     string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(password) + &amp;quot;:&amp;quot; + passwordSalt); &lt;br /&gt;
            &lt;br /&gt;
     ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The first line creates a salt by hashing a random UUID.  Please note that this produces a salt which is a UUID but one that doesn't contain dashes (-).&lt;br /&gt;
&lt;br /&gt;
The second line hashes the plain text password (e.g. &amp;quot;123456&amp;quot;), appends a colon, and then appends the salt.  It then hashes the whole thing again (somebody sure likes their hash) to produce a final password hash.&lt;br /&gt;
&lt;br /&gt;
The salt and hash are then stored in the passwordSalt and passwordHash fields of the auth table in OpenSimulator.&lt;br /&gt;
&lt;br /&gt;
=== Setting ===&lt;br /&gt;
&lt;br /&gt;
There are two ways in which one can set an OpenSimulator password from an external system, rather than going through the SetPassword() method.&lt;br /&gt;
&lt;br /&gt;
==== Direct database write ====&lt;br /&gt;
&lt;br /&gt;
You can set the salt and hash directly by writing to the passwordSalt and passwordHash fields of the auth table in OpenSimulator.&lt;br /&gt;
&lt;br /&gt;
==== ROBUST authentication service call ====&lt;br /&gt;
&lt;br /&gt;
Alternatively, if ROBUST is running and one has direct access to the instance running the Authentication service then you can call the SetAuthInfo method to store these fields.  Unfortunately, this mechanism is not currently available for standalone instances.&lt;br /&gt;
&lt;br /&gt;
To enable the SetAuthInfo method, set AllowSetAuthInfo = true in the [AuthenticationService] section of Robust.ini.&lt;br /&gt;
&lt;br /&gt;
Then, again as long as you know the UUID of the user (which is not so helpful if you want to create a user from scratch), you can use python code like the following to set hash and salt directly.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/python&lt;br /&gt;
 &lt;br /&gt;
 import httplib&lt;br /&gt;
 import urllib&lt;br /&gt;
 &lt;br /&gt;
 params = urllib.urlencode({'METHOD':'setauthinfo', 'PRINCIPAL' : 'dd5b77f8-bf88-45ac-aace-35bd76426c81', 'PasswordHash':'57956c4bff2e4fc19995613c6256cc98',  'PasswordSalt':'ed9e530476b9c984cc869d2c64d348b2'})&lt;br /&gt;
 conn = httplib.HTTPConnection(&amp;quot;localhost&amp;quot;, 8003);&lt;br /&gt;
 conn.request(&amp;quot;POST&amp;quot;, &amp;quot;/auth/plain&amp;quot;, params)&lt;br /&gt;
 response = conn.getresponse()&lt;br /&gt;
 print response.read();&lt;/div&gt;</summary>
		<author><name>Justincc</name></author>	</entry>

	</feed>