|
@@ -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))
|