|  | @@ -4,61 +4,97 @@ Gogs LDAP Authentication Module
 | 
	
		
			
				|  |  |  ## About
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  This authentication module attempts to authorize and authenticate a user
 | 
	
		
			
				|  |  | -against an LDAP server. Like most LDAP authentication systems, this module does
 | 
	
		
			
				|  |  | -this in two steps. First, it queries the LDAP server using a Bind DN and
 | 
	
		
			
				|  |  | +against an LDAP server. It provides two methods of authenitcation: LDAP via
 | 
	
		
			
				|  |  | +BindDN, and LDAP simple authentication.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +LDAP via BindDN functions like most LDAP authentication systems.
 | 
	
		
			
				|  |  | +First, it queries the LDAP server using a Bind DN and
 | 
	
		
			
				|  |  |  searches for the user that is attempting to sign in. If the user is found, the
 | 
	
		
			
				|  |  |  module attempts to bind to the server using the user's supplied credentials. If
 | 
	
		
			
				|  |  |  this succeeds, the user has been authenticated, and his account information is
 | 
	
		
			
				|  |  |  retrieved and passed to the Gogs login infrastructure.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +LDAP simple authentication does not utilize a Bind DN. Instead, it binds
 | 
	
		
			
				|  |  | +directly with the LDAP server using the user's supplied credentials. If the bind
 | 
	
		
			
				|  |  | +succeeds and no filter rules out the user, the user is authenticated.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +LDAP via BindDN is recommended for most users. By using a Bind DN, the server
 | 
	
		
			
				|  |  | +can perform authorization by restricting which entries the Bind DN account can
 | 
	
		
			
				|  |  | +read. Further, using a Bind DN with reduced permissions can reduce security risk
 | 
	
		
			
				|  |  | +in the face of application bugs.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  ## Usage
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  To use this module, add an LDAP authentication source via the Authentications
 | 
	
		
			
				|  |  | -section in the admin panel. The fields should be set as follows:
 | 
	
		
			
				|  |  | +section in the admin panel. Both the LDAP via BindDN and the simple auth LDAP
 | 
	
		
			
				|  |  | +share the following fields:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  * Authorization Name **(required)**
 | 
	
		
			
				|  |  | -	* A name to assign to the new method of authorization.
 | 
	
		
			
				|  |  | +    * A name to assign to the new method of authorization.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  * Host **(required)**
 | 
	
		
			
				|  |  | -	* The address where the LDAP server can be reached.
 | 
	
		
			
				|  |  | -	* Example: mydomain.com
 | 
	
		
			
				|  |  | +    * The address where the LDAP server can be reached.
 | 
	
		
			
				|  |  | +    * Example: mydomain.com
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  * Port **(required)**
 | 
	
		
			
				|  |  | -	* The port to use when connecting to the server.
 | 
	
		
			
				|  |  | -	* Example: 636
 | 
	
		
			
				|  |  | +    * The port to use when connecting to the server.
 | 
	
		
			
				|  |  | +    * Example: 636
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  * Enable TLS Encryption (optional)
 | 
	
		
			
				|  |  | -	* Whether to use TLS when connecting to the LDAP server.
 | 
	
		
			
				|  |  | +    * Whether to use TLS when connecting to the LDAP server.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* Admin Filter (optional)
 | 
	
		
			
				|  |  | +    * An LDAP filter specifying if a user should be given administrator
 | 
	
		
			
				|  |  | +      privileges. If a user accounts passes the filter, the user will be
 | 
	
		
			
				|  |  | +      privileged as an administrator.
 | 
	
		
			
				|  |  | +    * Example: (objectClass=adminAccount)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* First name attribute (optional)
 | 
	
		
			
				|  |  | +    * The attribute of the user's LDAP record containing the user's first name.
 | 
	
		
			
				|  |  | +      This will be used to populate their account information.
 | 
	
		
			
				|  |  | +    * Example: givenName
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* Surname attribute (optional)
 | 
	
		
			
				|  |  | +    * The attribute of the user's LDAP record containing the user's surname This
 | 
	
		
			
				|  |  | +      will be used to populate their account information.
 | 
	
		
			
				|  |  | +    * Example: sn
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +* E-mail attribute **(required)**
 | 
	
		
			
				|  |  | +    * The attribute of the user's LDAP record containing the user's email
 | 
	
		
			
				|  |  | +      address. This will be used to populate their account information.
 | 
	
		
			
				|  |  | +    * Example: mail
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +**LDAP via BindDN** adds the following fields:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  * Bind DN (optional)
 | 
	
		
			
				|  |  | -	* The DN to bind to the LDAP server with when searching for the user.
 | 
	
		
			
				|  |  | -	This may be left blank to perform an anonymous search.
 | 
	
		
			
				|  |  | -	* Example: cn=Search,dc=mydomain,dc=com
 | 
	
		
			
				|  |  | +    * The DN to bind to the LDAP server with when searching for the user. This
 | 
	
		
			
				|  |  | +      may be left blank to perform an anonymous search.
 | 
	
		
			
				|  |  | +    * Example: cn=Search,dc=mydomain,dc=com
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  * Bind Password (optional)
 | 
	
		
			
				|  |  | -	* The password for the Bind DN specified above, if any.
 | 
	
		
			
				|  |  | +    * The password for the Bind DN specified above, if any. _Note: The password
 | 
	
		
			
				|  |  | +      is stored in plaintext at the server. As such, ensure that your Bind DN
 | 
	
		
			
				|  |  | +      has as few privileges as possible._
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  * User Search Base **(required)**
 | 
	
		
			
				|  |  | -	* The LDAP base at which user accounts will be searched for.
 | 
	
		
			
				|  |  | -	* Example: ou=Users,dc=mydomain,dc=com
 | 
	
		
			
				|  |  | +    * The LDAP base at which user accounts will be searched for.
 | 
	
		
			
				|  |  | +    * Example: ou=Users,dc=mydomain,dc=com
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  * User Filter **(required)**
 | 
	
		
			
				|  |  | -	* An LDAP filter declaring how to find the user record that is attempting
 | 
	
		
			
				|  |  | -	to authenticate. The '%s' matching parameter will be substituted with
 | 
	
		
			
				|  |  | -	the user's username.
 | 
	
		
			
				|  |  | -	* Example: (&(objectClass=posixAccount)(uid=%s))
 | 
	
		
			
				|  |  | +    * An LDAP filter declaring how to find the user record that is attempting to
 | 
	
		
			
				|  |  | +      authenticate. The '%s' matching parameter will be substituted with the
 | 
	
		
			
				|  |  | +      user's username.
 | 
	
		
			
				|  |  | +    * Example: (&(objectClass=posixAccount)(uid=%s))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -* First name attribute (optional)
 | 
	
		
			
				|  |  | -	* The attribute of the user's LDAP record containing the user's first
 | 
	
		
			
				|  |  | -	name. This will be used to populate their account information.
 | 
	
		
			
				|  |  | -	* Example: givenName
 | 
	
		
			
				|  |  | +**LDAP using simple auth** adds the following fields:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -* Surname name attribute (optional)
 | 
	
		
			
				|  |  | -	* The attribute of the user's LDAP record containing the user's surname
 | 
	
		
			
				|  |  | -	This will be used to populate their account information.
 | 
	
		
			
				|  |  | -	* Example: sn
 | 
	
		
			
				|  |  | +* User DN **(required)**
 | 
	
		
			
				|  |  | +    * A template to use as the user's DN. The `%s` matching parameter will be
 | 
	
		
			
				|  |  | +      substituted with the user's username.
 | 
	
		
			
				|  |  | +    * Example: cn=%s,ou=Users,dc=mydomain,dc=com
 | 
	
		
			
				|  |  | +    * Example: uid=%s,ou=Users,dc=mydomain,dc=com
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -* E-mail attribute **(required)**
 | 
	
		
			
				|  |  | -	* The attribute of the user's LDAP record containing the user's email
 | 
	
		
			
				|  |  | -	address. This will be used to populate their account information.
 | 
	
		
			
				|  |  | -	* Example: mail
 | 
	
		
			
				|  |  | +* User Filter **(required)**
 | 
	
		
			
				|  |  | +    * An LDAP filter declaring when a user should be allowed to log in. The `%s`
 | 
	
		
			
				|  |  | +      matching parameter will be substituted with the user's username.
 | 
	
		
			
				|  |  | +    * Example: (&(objectClass=posixAccount)(uid=%s))
 |