Skip to content

Commit 0e1ded5

Browse files
Added v3.3 doc updates
1 parent 3c1026e commit 0e1ded5

File tree

3 files changed

+215
-39
lines changed

3 files changed

+215
-39
lines changed

docs/_docs/getting-started/configuration.md

+84-39
Original file line numberDiff line numberDiff line change
@@ -50,23 +50,23 @@ alpine.worker.threads=0
5050
alpine.worker.thread.multiplier=4
5151

5252
# Required
53-
# Defines the path to the data directory. This directory will hold logs,
54-
# keys, and any database or index files along with application-specific
55-
# files or directories.
53+
# Defines the path to the data directory. This directory will hold logs, keys,
54+
# and any database or index files along with application-specific files or
55+
# directories.
5656
alpine.data.directory=~/.dependency-track
5757

5858
# Required
59-
# Defines the interval (in seconds) to log general heath information.
60-
# If value equals 0, watchdog logging will be disabled.
59+
# Defines the interval (in seconds) to log general heath information. If value
60+
# equals 0, watchdog logging will be disabled.
6161
alpine.watchdog.logging.interval=0
6262

6363
# Required
6464
# Defines the database mode of operation. Valid choices are:
6565
# 'server', 'embedded', and 'external'.
66-
# In server mode, the database will listen for connections from remote
67-
# hosts. In embedded mode, the system will be more secure and slightly
68-
# faster. External mode should be used when utilizing an external
69-
# database server (i.e. mysql, postgresql, etc).
66+
# In server mode, the database will listen for connections from remote hosts.
67+
# In embedded mode, the system will be more secure and slightly faster.
68+
# External mode should be used when utilizing an external database server
69+
# (i.e. mysql, postgresql, etc).
7070
alpine.database.mode=embedded
7171

7272
# Optional
@@ -94,16 +94,15 @@ alpine.database.username=sa
9494
# alpine.database.password=
9595

9696
# Optional
97-
# When authentication is enforced, API keys are required for automation,
98-
# and the user interface will prevent anonymous access by prompting for login
97+
# When authentication is enforced, API keys are required for automation, and
98+
# the user interface will prevent anonymous access by prompting for login
9999
# credentials.
100100
alpine.enforce.authentication=true
101101

102102
# Optional
103-
# When authorization is enforced, team membership for both API keys and
104-
# user accounts are restricted to what the team itself has access to.
105-
# To enforce authorization, the enforce.authentication property (above)
106-
# must be true.
103+
# When authorization is enforced, team membership for both API keys and user
104+
# accounts are restricted to what the team itself has access to. To enforce
105+
# authorization, the enforce.authentication property (above) must be true.
107106
alpine.enforce.authorization=true
108107

109108
# Required
@@ -119,54 +118,100 @@ alpine.ldap.enabled=false
119118

120119
# Optional
121120
# Specifies the LDAP server URL
121+
# Example (Microsoft Active Directory):
122+
# alpine.ldap.server.url=ldap://ldap.example.com:3268
123+
# alpine.ldap.server.url=ldaps://ldap.example.com:3269
124+
# Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
125+
# alpine.ldap.server.url=ldap://ldap.example.com:389
126+
# alpine.ldap.server.url=ldaps://ldap.example.com:636
122127
alpine.ldap.server.url=ldap://ldap.example.com:389
123128

124-
# Optional
125-
# Specifies the LDAP server domain. This is normally appended to the end of the
126-
# username to form the userPrincipalName
127-
alpine.ldap.domain=example.com
128-
129129
# Optional
130130
# Specifies the base DN that all queries should search from
131131
alpine.ldap.basedn=dc=example,dc=com
132132

133133
# Optional
134-
# Specifies the LDAP security authentication level to use.
135-
# Its value is one of the following strings: "none", "simple", "strong".
136-
# If this property is empty or unspecified, the behaviour is determined by the service provider.
134+
# Specifies the LDAP security authentication level to use. Its value is one of
135+
# the following strings: "none", "simple", "strong". If this property is empty
136+
# or unspecified, the behaviour is determined by the service provider.
137137
alpine.ldap.security.auth=simple
138138

139139
# Optional
140-
# If anonymous access is not permitted, specify a username with limited
141-
# access to the directory. Just enough to perform searches.
140+
# If anonymous access is not permitted, specify a username with limited access
141+
# to the directory, just enough to perform searches. This should be the fully
142+
# qualified DN of the user.
142143
alpine.ldap.bind.username=
143144

144145
# Optional
145-
# If anonymous access is not permitted, specify a password for the
146-
# username used to bind.
146+
# If anonymous access is not permitted, specify a password for the username
147+
# used to bind.
147148
alpine.ldap.bind.password=
148149

149150
# Optional
150-
# Specifies how to map the user identifier entered by the user to that passed through to LDAP.
151-
# If is configured to a non-empty value, the substring %s in this value will be replaced
152-
# with the entered username.
153-
# The recommended format of this value depends on your LDAP server(Active Directory, OpenLDAP, etc.).
154-
# Examples:
155-
# alpine.ldap.auth.username.format=%s
156-
# alpine.ldap.auth.username.format=%s@example.com
157-
# alpine.ldap.auth.username.format=uid=%s,ou=People,dc=example,dc=com
158-
# alpine.ldap.auth.username.format=userPrincipalName=%s,ou=People,dc=example,dc=com
159-
alpine.ldap.auth.username.format=
151+
# Specifies if the username entered during login needs to be formatted prior
152+
# to asserting credentials against the directory. For Active Directory, the
153+
# userPrincipal attribute typically ends with the domain, whereas the
154+
# samAccountName attribute and other directory server implementations do not.
155+
# The %s variable will be substitued with the username asserted during login.
156+
# Example (Microsoft Active Directory):
157+
# alpine.ldap.auth.username.format=%s@example.com
158+
# Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
159+
# alpine.ldap.auth.username.format=%s
160+
alpine.ldap.auth.username.format=%s@example.com
160161

161162
# Optional
162-
# Specifies the Attribute that all queries should use
163-
# The default attribute is userPrincipalName
163+
# Specifies the Attribute that identifies a users ID
164+
# Example (Microsoft Active Directory):
165+
# alpine.ldap.attribute.name=userPrincipalName
166+
# Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
167+
# alpine.ldap.attribute.name=uid
164168
alpine.ldap.attribute.name=userPrincipalName
165169

166170
# Optional
167171
# Specifies the LDAP attribute used to store a users email address
168172
alpine.ldap.attribute.mail=mail
169173

174+
# Optional
175+
# Specifies the LDAP search filter used to retrieve all groups from the
176+
# directory.
177+
# Example (Microsoft Active Directory):
178+
# alpine.ldap.groups.filter=(&(objectClass=group)(objectCategory=Group))
179+
# Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
180+
# alpine.ldap.groups.filter=(&(objectClass=groupOfUniqueNames))
181+
alpine.ldap.groups.filter=(&(objectClass=group)(objectCategory=Group))
182+
183+
# Optional
184+
# Specifies the LDAP search filter to use to query a user and retrieve a list
185+
# of groups the user is a member of. The {USER_DN} variable will be substituted
186+
# with the actual value of the users DN at runtime.
187+
# Example (Microsoft Active Directory):
188+
# alpine.ldap.user.groups.filter=(&(objectClass=group)(objectCategory=Group)(member={USER_DN}))
189+
# Example (Microsoft Active Directory - with nested group support):
190+
# alpine.ldap.user.groups.filter=(member:1.2.840.113556.1.4.1941:={USER_DN})
191+
# Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
192+
# alpine.ldap.user.groups.filter=(&(objectClass=groupOfUniqueNames)(uniqueMember={USER_DN}))
193+
alpine.ldap.user.groups.filter=(member:1.2.840.113556.1.4.1941:={USER_DN})
194+
195+
# Optional
196+
# Specifies if mapped LDAP accounts are automatically created upon successful
197+
# authentication. When a user logs in with valid credentials but an account has
198+
# not been previously provisioned, an authentication failure will be returned.
199+
# This allows admins to control specifically which ldap users can access the
200+
# system and which users cannot. When this value is set to true, a local ldap
201+
# user will be created and mapped to the ldap account automatically. This
202+
# automatic provisioning only affects authentication, not authorization.
203+
alpine.ldap.user.provisioning=false
204+
205+
# Optional
206+
# This option will ensure that team memberships for LDAP users are dynamic and
207+
# synchronized with membership of LDAP groups. When a team is mapped to an LDAP
208+
# group, all local LDAP users will automatically be assigned to the team if
209+
# they are a member of the group the team is mapped to. If the user is later
210+
# removed from the LDAP group, they will also be removed from the team. This
211+
# option provides the ability to dynamically control user permissions via an
212+
# external directory.
213+
alpine.ldap.team.synchronization=false
214+
170215
# Optional
171216
# HTTP proxy. If the address is set, then the port must be set too.
172217
# alpine.http.proxy.address=proxy.example.com
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
title: LDAP Configuration
3+
category: Getting Started
4+
chapter: 1
5+
order: 8
6+
---
7+
8+
Dependency-Track has been tested with multiple LDAP servers. The following are
9+
some example configurations that are known to work with the default schema of
10+
each server implementation.
11+
12+
#### Microsoft Active Directory Example
13+
14+
```ini
15+
alpine.ldap.enabled=true
16+
alpine.ldap.server.url=ldap://ldap.example.com:3268
17+
alpine.ldap.basedn=dc=example,dc=com
18+
alpine.ldap.security.auth=simple
19+
alpine.ldap.auth.username.format=%s@example.com
20+
alpine.ldap.bind.username=cn=ServiceAccount,cn=Users,dc=example,dc=com
21+
alpine.ldap.bind.password=mypassword
22+
alpine.ldap.attribute.name=userPrincipalName
23+
alpine.ldap.attribute.mail=mail
24+
alpine.ldap.groups.filter=(&(objectClass=group)(objectCategory=Group))
25+
alpine.ldap.user.groups.filter=(member:1.2.840.113556.1.4.1941:={USER_DN})
26+
```
27+
28+
#### ApacheDS Example
29+
30+
```ini
31+
alpine.ldap.enabled=true
32+
alpine.ldap.server.url=ldap://ldap.example.com:389
33+
alpine.ldap.basedn=dc=example,dc=com
34+
alpine.ldap.security.auth=simple
35+
alpine.ldap.auth.username.format=%s
36+
alpine.ldap.bind.username=uid=ServiceAccount,ou=system
37+
alpine.ldap.bind.password=mypassword
38+
alpine.ldap.attribute.name=cn
39+
alpine.ldap.attribute.mail=mail
40+
alpine.ldap.groups.filter=(&(objectClass=groupOfUniqueNames))
41+
alpine.ldap.user.groups.filter=(&(objectClass=groupOfUniqueNames)(uniqueMember={USER_DN}))
42+
```
43+
44+
#### Fedora 389 Directory Example
45+
46+
```ini
47+
alpine.ldap.enabled=true
48+
alpine.ldap.server.url=ldap://ldap.example.com:389
49+
alpine.ldap.basedn=dc=example,dc=com
50+
alpine.ldap.security.auth=simple
51+
alpine.ldap.auth.username.format=%s
52+
alpine.ldap.bind.username=cn=directory manager
53+
alpine.ldap.bind.password=mypassword
54+
alpine.ldap.attribute.name=uid
55+
alpine.ldap.attribute.mail=mail
56+
alpine.ldap.groups.filter=(&(objectClass=groupOfUniqueNames))
57+
alpine.ldap.user.groups.filter=(&(objectClass=groupOfUniqueNames)(uniqueMember={USER_DN}))
58+
```
59+
60+
#### NetIQ/Novell eDirectory Example
61+
62+
```ini
63+
alpine.ldap.enabled=true
64+
alpine.ldap.server.url=ldaps://ldap.example.com:636
65+
alpine.ldap.basedn=o=example
66+
alpine.ldap.security.auth=simple
67+
alpine.ldap.auth.username.format=%s
68+
alpine.ldap.bind.username=cn=ServiceAccount,o=example
69+
alpine.ldap.bind.password=mypassword
70+
alpine.ldap.attribute.name=uid
71+
alpine.ldap.attribute.mail=mail
72+
alpine.ldap.groups.filter=(&(objectClass=groupOfUniqueNames))
73+
alpine.ldap.user.groups.filter=(&(objectClass=groupOfUniqueNames)(uniqueMember={USER_DN}))
74+
```

docs/_posts/2018-10-25-v3.3.0.md

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
title: v3.3.0
3+
type: major
4+
---
5+
6+
**Features:**
7+
8+
* The ability to manually upload a CycloneDX or SPDX BoM from the user interface
9+
* Optional automated provisioning of LDAP users
10+
* Optional synchronization of team membership based on a users LDAP group membership
11+
* Added API that provides component metadata from a project in CycloneDX format
12+
* Added ability to track the progress of work performed when a BoM is uploaded
13+
* Added tracking of audited and unaudited metrics
14+
* Added ability to add new project version and optionally clone source metadata
15+
* Added ability to search by tag name when displaying projects
16+
* Added checksum generation when publishing a release (backported to 3.2.2)
17+
* The NSP Advisory API has been removed and replaced with the NPM Public Advisory API (backported to v3.2.1)
18+
19+
**Fixes:**
20+
21+
* Fixed numerous LDAP compatibility issues
22+
* Added additional logging when BoM upload is not in a supported format
23+
24+
**Upgrade Notes:**
25+
26+
This release of Dependency-Track supports a wide range of LDAP implementations and has been tested with
27+
Active Directory, ApacheDS, Fedora 389 Directory, and NetIQ/Novell eDirectory. In order to ensure compatibility,
28+
some existing LDAP configuration properties have been changed.
29+
30+
31+
```ini
32+
# This property has been removed
33+
alpine.ldap.domain
34+
```
35+
36+
```ini
37+
# This property now refers to the users DN
38+
alpine.ldap.bind.username
39+
```
40+
41+
```ini
42+
# Format now applies only to the value of alpine.ldap.attribute.name.
43+
# Examples have been modified. A users DN is no longer a valid format.
44+
alpine.ldap.auth.username.format
45+
```
46+
47+
```ini
48+
# New properties
49+
alpine.ldap.groups.filter
50+
alpine.ldap.user.groups.filter
51+
alpine.ldap.user.provisioning
52+
alpine.ldap.team.synchronization
53+
```
54+
55+
**See Also:**
56+
* [Configuration]({{ site.baseurl }}{% link _docs/getting-started/configuration.md %}) (updated)
57+
* [LDAP Configuration]({{ site.baseurl }}{% link _docs/getting-started/ldap-configuration.md %}) (examples)

0 commit comments

Comments
 (0)