summaryrefslogtreecommitdiffstats
path: root/src/site/setup_authentication.mkd
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-07-03 21:35:02 -0400
committerJames Moger <james.moger@gitblit.com>2013-07-03 21:35:02 -0400
commit8c99a7929b48b4c4a33c80d0b6646f6e6bb563b5 (patch)
treef0cce1420e9196339c612c2994d393455a23d365 /src/site/setup_authentication.mkd
parent5c5b7a8659851abc6ce1654414ceeef2e7f9c803 (diff)
downloadgitblit-8c99a7929b48b4c4a33c80d0b6646f6e6bb563b5.tar.gz
gitblit-8c99a7929b48b4c4a33c80d0b6646f6e6bb563b5.zip
Documentation
Diffstat (limited to 'src/site/setup_authentication.mkd')
-rw-r--r--src/site/setup_authentication.mkd101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/site/setup_authentication.mkd b/src/site/setup_authentication.mkd
new file mode 100644
index 00000000..d6956b18
--- /dev/null
+++ b/src/site/setup_authentication.mkd
@@ -0,0 +1,101 @@
+## Built-in Authentication
+
+By default, Gitblit stores and authenticates all users against `users.conf`. However, you may wish to integrate Gitblit into an existing user account infrastructure.
+
+Gitblit supports additional authentication mechanisms aside from it's internal one.
+
+* LDAP authentication
+* Windows authentication
+* Redmine auhentication
+* Salesforce.com authentication
+
+### LDAP Authentication
+*SINCE 1.0.0*
+
+LDAP can be used to authenticate Users and optionally control Team memberships. When properly configured, Gitblit will delegate authentication to your LDAP server and will cache some user information in the usual users file (.conf or .properties).
+
+When using the LDAP User Service, new user accounts can not be manually created from Gitblit. Gitblit user accounts are automatically created for new users on their first succesful authentication through Gitblit against the LDAP server. It is also important to note that the LDAP User Service does not retrieve or store user passwords nor does it implement any LDAP-write functionality.
+
+To use the *LdapUserService* set *realm.userService=com.gitblit.LdapUserService* in your `gitblit.properties` file or your `web.xml` file and then configure the *realm.ldap* settings appropriately for your LDAP environment.
+
+#### Example LDAP Layout
+![block diagram](ldapSample.png "LDAP Sample")
+
+Please see [ldapUserServiceSampleData.ldif](https://github.com/gitblit/gitblit/blob/master/tests/com/gitblit/tests/resources/ldapUserServiceSampleData.ldif) to see the data in LDAP that reflects the above picture.
+
+#### Gitblit Settings for Example LDAP Layout
+The following are the settings required to configure Gitblit to authenticate against the example LDAP server with LDAP-controlled team memberships.
+
+<table class="table">
+<thead>
+<tr><th>parameter</th><th>value</th><th>description</th></tr>
+</thead>
+<tbody>
+<tr>
+ <th>realm.ldap.server</th><td>ldap://localhost:389</td>
+ <td>Tells Gitblit to connect to the LDAP server on localhost port 389. The URL Must be of form ldap(s)://&lt;server&gt;:&lt;port&gt; with port being optional (389 for ldap, 636 for ldaps).</td>
+</tr>
+<tr>
+ <th>realm.ldap.username</th><td>cn=Directory Manager</td>
+ <td>The credentials that will log into the LDAP server</td>
+</tr>
+<tr>
+ <th>realm.ldap.password</th><td>password</td>
+ <td>The credentials that will log into the LDAP server</td>
+</tr>
+<tr>
+ <th>realm.ldap.backingUserService</th><td>users.conf</td>
+ <td>Where to store all information that is used by Gitblit. All information will be synced here upon user login.</td>
+</tr>
+<tr>
+ <th>realm.ldap.maintainTeams</th><td>true</td>
+ <td>Are team memberships maintained in LDAP (<em>true</em>) or manually in Gitblit (<em>false</em>).</td>
+</tr>
+<tr>
+ <th>realm.ldap.accountBase</th><td>OU=Users,OU=UserControl,OU=MyOrganization,DC=MyDomain</td>
+ <td>What is the root node for all users in this LDAP system. Subtree searches will start from this node.</td>
+</tr>
+<tr>
+ <th>realm.ldap.accountPattern</th><td>(&(objectClass=person)(sAMAccountName=${username}))</td><td>The LDAP search filter that will match a particular user in LDAP. ${username} will be replaced with whatever the user enters as their username in the Gitblit login panel.</td>
+</tr>
+<tr>
+ <th>realm.ldap.groupBase</th><td>OU=Groups,OU=UserControl,OU=MyOrganization,DC=MyDomain</td>
+ <td>What is the root node for all teams in this LDAP system. Subtree searches will start from this node.</td>
+</tr>
+<tr>
+ <th>realm.ldap.groupMemberPattern</th><td>(&(objectClass=group)(member=${dn}))</td><td>The LDAP search filter that will match all teams for the authenticating user. ${username} will be replaced with whatever the user enters as their username in the Gitblit login panel. Anything else in ${} will be replaced by Attributes from the User node.</td>
+</tr>
+<tr>
+ <th>realm.ldap.admins</th><td>@Git_Admins</td><td>A space-delimited list of usernames and/or teams that indicate admin status in Gitblit. Teams are referenced with a leading <em>@</em> character.</td>
+</tr>
+</tbody>
+</table>
+
+#### LDAP In-Memory Server
+
+You can start Gitblit GO with an in-memory LDAP server by specifying the *--ldapLdifFile* command-line argument. The LDAP server will listen on localhost of the port specified in *realm.ldap.url* of `gitblit.properties`. Additionally, a root user record is automatically created for *realm.ldap.username* and *realm.ldap.password*. Please note that the ldaps:// protocol is not supported for the in-memory server.
+
+### Windows Authentication
+
+### Redmine Authentication
+
+### Salesforce.com Authentication
+
+## Custom Authentication
+This is the simplest choice where you implement custom authentication and delegate all other standard user and team operations to one of Gitblit's user service implementations. This choice insulates your customization from changes in User and Team model classes and additional API that may be added to IUserService.
+
+Please subclass [com.gitblit.GitblitUserService](https://github.com/gitblit/gitblit/blob/master/src/com/gitblit/GitblitUserService.java) and override the *setup()* and *authenticate()* methods.
+Make sure to set the *serviceImpl* field in your *setup()* method.
+
+You may use your subclass by specifying its fully qualified classname in the *realm.userService* setting.
+
+Your subclass must be on Gitblit's classpath and must have a public default constructor.
+
+### Custom Everything
+Instead of maintaining a `users.conf` or `users.properties` file, you may want to integrate Gitblit into an existing environment.
+
+You may use your own custom *com.gitblit.IUserService* implementation by specifying its fully qualified classname in the *realm.userService* setting.
+
+Your user service class must be on Gitblit's classpath and must have a public default constructor.
+Please see the following interface definition [com.gitblit.IUserService](https://github.com/gitblit/gitblit/blob/master/src/com/gitblit/IUserService.java).
+