Skip to content

Commit 19ed0de

Browse files
committed
readme/changelog updates
1 parent 7dcd2ab commit 19ed0de

File tree

4 files changed

+245
-61
lines changed

4 files changed

+245
-61
lines changed

CHANGES.md

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Changelog
2+
3+
## [2.0.5] - Release Feb 10, 2023
4+
- update java and javascript dependencies
5+
- update tomcat to 9.0.71 for onejar/docker images
6+
- update java to 11.0.18_10 in docker image
7+
- fix issue #688 - photo download mime type enforcement
8+
- fix issue #689 - XML entity reference attack on log event data
9+
- fix issue #690 - LDAP search filter injection during advanced peoplesearch and helpdesk queries
10+
- fix issue #691 - Helpdesk idle timeout not working
11+
- update default C/R PBKDF2/SHA512 iteration count to 1_000_000
12+
13+
## [2.0.4] - Released Oct 1, 2022
14+
- version check service request frequency fix
15+
- update java and javascript dependencies
16+
- update tomcat to 9.0.67 for onejar/docker images
17+
- update java to 11.0.16.1 in docker image
18+
19+
## [2.0.3] - Released July 30, 2022
20+
- version check service de-serialization error fix
21+
- fix issue with config guide buttons not working on storage selection page
22+
23+
## [2.0.2] - Released July 7, 2022
24+
- add version check service
25+
- update java and npm, dependencies including tomcat 9.0.65 for onejar/docker images.
26+
- fix issue #542 - web actions do not save/load properly if a basic auth password is not included
27+
- fix issue #660 - Shortcut module does not display shortcuts based on …
28+
- fix issue with js dom/ready initialization on helpdesk/peoplesearch page loading
29+
- replace log4j with reload4j (issue #628)
30+
31+
## [2.0.1] - Released March 11, 2022
32+
- Issue #573 - PWM 5081 at the end of user activation ( no profile assigned )
33+
- Issue #615 - Error 5203 while editing/removing challenge policy questions in config editor
34+
- Dependency/Library updates

README.md

+209-59
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,234 @@
11
# PWM
22

3-
PWM is an open source password self service application for LDAP directories. PWM is an ideal candidate for organizations that wish to “roll their own” password self service solution, but do not wish to start from scratch. [Overview/Screenshots](https://docs.google.com/presentation/d/1LxDXV_iiToJXAzzT9mc1xXO0atVObmRpCame6qXOyxM/pub?slide=id.p8)
3+
PWM is an open source password self-service application for LDAP directories.
44

55
Official project page is at [https://github.com/pwm-project/pwm/](https://github.com/pwm-project/pwm/).
66

77
# Links
88
* [PWM-General Google Group](https://groups.google.com/group/pwm-general) - please ask for assistance here first.
99
* [PWM Documentation Wiki](https://github.com/pwm-project/pwm/wiki) - Home for PWM documentation
10-
* [Current Builds](https://www.pwm-project.org/artifacts/pwm/) - Current downloads built from recent github project commits
1110
* [PWM Reference](https://www.pwm-project.org/pwm/public/reference/) - Reference documentation built into PWM.
11+
* [Downloads](https://github.com/pwm-project/pwm/releases)
1212

1313
# Features
14-
* Web based configuration manager with over 400 configurable settings
15-
* Configurable display values for every user-facing text string
16-
* Localized for Chinese (中文), Czech (ceština), Dutch (Nederlands), English, Finnish (suomi), French (français), German (Deutsch), Hebrew (עברית), Italian (italiano), Japanese (日本語), Korean (한국어), Polish (polski), Portuguese (português), Slovak (Slovenčina), Spanish (español), Thai (ไทย) and Turkish (Türkçe)
17-
* Polished, intuitive end-user interface with as-you-type password rule enforcement
18-
* Forgotten Password
19-
* Store Responses in local server, standard RDBMS database, LDAP server or Novell NMAS repositories
20-
* Use Forgotten Password, Email/SMS Token/PIN, TOTP, Remote REST service, User LDAP attribute values, or any combination
21-
* Stand-alone, easy to deploy, java web application
22-
* Helpdesk password reset and intruder lockout clearing
23-
* New User Registration / Account Creation
24-
* Guest User Registration / Updating
25-
* PeopleSearch (white pages)
26-
* Account Activation / First time password assignment
27-
* Administration modules including intruder-lockout manager, and online log viewer, daily stats viewer and user information debugging
28-
* Easy to customize JSP HTML pages
14+
* Web based configuration manager with over 500 configurable settings
15+
* All configuration contained in a single importable/exportable file
16+
* Configurable display values for every user-facing text string
17+
* Included localizations (not all are complete or current):
18+
* English - English
19+
* Catalan - català
20+
* Chinese (China) - 中文 (中国)
21+
* Chinese (Taiwan) - 中文 (台灣)
22+
* Czech - čeština
23+
* Danish - dansk
24+
* Dutch - Nederlands
25+
* English (Canada) - English (Canada)
26+
* Finnish - suomi
27+
* French - français
28+
* French (Canada) - français (Canada)
29+
* German - Deutsch
30+
* Greek - Ελληνικά
31+
* Hebrew - עברית
32+
* Hungarian - magyar
33+
* Italian - italiano
34+
* Japanese - 日本語
35+
* Korean - 한국어
36+
* Norwegian - norsk
37+
* Norwegian Bokmål - norsk bokmål
38+
* Norwegian Nynorsk - nynorsk
39+
* Polish - polski
40+
* Portuguese - português
41+
* Portuguese (Brazil) - português (Brasil)
42+
* Russian - русский
43+
* Slovak - slovenčina
44+
* Spanish - español
45+
* Swedish - svenska
46+
* Thai - ไทย
47+
* Turkish - Türkçe
48+
* LDAP Directory Support:
49+
* Multiple LDAP vendor support:
50+
* Generic LDAP (best-effort, LDAP password behavior and error handling is not standardized in LDAP)
51+
* Directory 389
52+
* Reading of configured user password policies
53+
* NetIQ eDirectory
54+
* Read Password Policies & Challenge Sets
55+
* NMAS Operations and Error handling
56+
* Support for NMAS user challenge/responses
57+
* Microsoft Active Directory
58+
* Reading of Fine-Grained Password Policy (FGPP) Password Setting Objects (PSO) (does not read domain policies)
59+
* OpenLDAP
60+
* Native LDAP retry/failover support of multiple redundant LDAP servers
61+
* Large set of locally configurable password polices
62+
* Standard syntax rules
63+
* Regex rules
64+
* Password dictionary enforcement
65+
* Remote REST server checking
66+
* AD-style syntax groups
67+
* Shared password history to prevent passwords from being reused organizationally
68+
* Modules
69+
* Change Password
70+
* as-you-type password rule enforcement
71+
* password strength feedback display
72+
* Account Activation / First time password assignment
73+
* Forgotten Password
74+
* Store Responses in local server, standard RDBMS database, LDAP server or eDirectory NMAS repositories
75+
* User verification options:
76+
* Email/SMS Token/PIN
77+
* TOTP
78+
* Remote REST service
79+
* OAuth service
80+
* User LDAP attribute values
81+
* New User Registration / Account Creation
82+
* Guest User Registration / Updating
83+
* PeopleSearch (white pages)
84+
* Configurable detail pages
85+
* OrgChart view
86+
* Helpdesk password reset and intruder lockout clearing
87+
* Administration modules including intruder-lockout manager
88+
* online log viewer
89+
* daily stats viewer and user information debugging
90+
* statistics
91+
* audit records
92+
* Multiple Deployment Options
93+
* Java WAR file (bring your own application server, tested with Apache Tomcat)
94+
* Java single JAR file (bring your own Java VM)
95+
* Docker container
2996
* Theme-able interface with several example CSS themes
30-
* Support for large dictionary wordlists to enforce strong passwords
31-
* Shared password history to prevent passwords from being reused organizationally
32-
* Automatic LDAP server fail-over to multiple ldap servers
33-
* Support for password replication checking and minimum time delays during password sets
34-
* Captcha support using reCaptcha
35-
* Integration with CAS
36-
* Support for minimal, restricted and mobile browsers with no cookies, javascript or css
37-
* Specialized skins for iPhone/Mobile devices
38-
* Designed for integration with existing portals and web security gateways
39-
* Directory Support
40-
* Generic LDAP
41-
* Directory 389
42-
* NetIQ eDirectory
43-
* Password Policies & Challenge Sets
44-
* NMAS Operations and Error handling
45-
* Support for NMAS user challenge/responses
46-
* Microsoft Active Directory
47-
* OpenLDAP
48-
49-
[NetIQ Self Service Password Reset](https://www.microfocus.com/en-us/products/netiq-self-service-password-reset/overview) is a commercial, supported self service password reset product based on PWM.
50-
51-
# Build Information
97+
* Mobile devices specific CSS themes
98+
* Configuration support for additional web assets (css, js, images, etc)
99+
* Force display of organizational
100+
* Captcha support using Google reCaptcha
101+
* Multiple SSO options
102+
* Basic Authentication
103+
* HTTP header username injection
104+
* Central Authentication Service (CAS)
105+
* OAuth client
106+
* REST Server APIs for most functionality
107+
* Password set
108+
* Forgotten password
109+
* Password policy reading
110+
* User attribute updates
111+
* Password policy verification
112+
* Outbound REST API for custom integrations during user activities such as change password, new user registration, etc.
52113

53-
Build pre-requisites:
54-
* Java 1.11 JDK or newer
55-
* Maven 3.2 or newer
114+
## Requirements
115+
116+
Minimum requirements for PWM application.
117+
118+
| PWM Version | Java [^1] | Servlet | Tomcat [^2] |
119+
| --- | --- | --- | --- |
120+
| v2.1 | 17 | 3.0 | 9 |
121+
| v2.0 | 11-17 | 3.0 | 8-9 |
122+
| v1.9 | 8-11 | 3.0 | 7-9 |
123+
124+
[^1] There is no requirement for a specific Java implementation, PWM builds use [Adoptium](https://adoptium.net/).
125+
126+
[^2] Tomcat isn't an explicit requirement, but it is the most common container used with PWM, and
127+
the one that is used for the docker and onejar builds.
128+
129+
130+
131+
## Deploy
132+
PWM is distributed in the following artifacts, you can use whichever one is most convenient.
56133

57-
Build execution:
58-
* Set `JAVA_HOME` environment variable to JDK home
59-
* Run `mvn clean package` in base directory
134+
| Artifact | Description |
135+
| --- | --- |
136+
| WAR | Standard Java WAR (Web Archive) application deployment model, you need to have a working java & tomcat configuration on your server. |
137+
| Executable | Command line executable Java JAR application, includes tomcat. |
138+
| Docker | Docker image includes Java and Tomcat. |
60139

61-
A WAR file suitable for deployment on Apache Tomcat is created in `webapp/target` directory. Rename to `pwm.war` and copy into `tomcat/webapp` directory.
140+
For all deployment types, each PWM instance will need an _applicationPath_ directory defined on your local server for PWM's configuration,
141+
log, and runtime files. Once PWM is configured, the initial web UI will prompt the administrator for LDAP and other configuration settings.
62142

63-
Alternatively, an executable JAR file is created in `onejar\target`. This JAR file is self-contained single executable with embedded Apache Tomcat runtime. To execute use a command similar to:
143+
### WAR
64144

65-
`java -jar pwm-onejar.jar`
145+
Steps:
146+
1) Get Apache tomcat working to the point you can access the tomcat landing page with your browser. See tomcat documentation/help sites for
147+
assistance with installing and configuring tomcat.
148+
2) Set the _PWM_APPLICATIONPATH_ environment variable in your tomcat instance to a local location of your _applicationPath_ directory. See tomcat and/or your
149+
operating system documentation/help sites for assistance with configuring environment variables as the method for doing this depends on OS and deployment type.
150+
2) Place the pwm.war file in tomcat 'webapps' directory (rename from pwm-x.x.x.war with version naming)
151+
3) Access with /pwm url and configure
66152

67-
The executable will show additional options that may be required.
153+
### Executable
154+
The 'onejar' artifact released with PWM has an embedded tomcat instance, so you don't need to install tomcat to use this
155+
version. You will be responsible for getting it to run as a service, and you won't be able to do any advanced tomcat
156+
configuration.
68157

69-
# Docker
158+
Requirements:
159+
* Java 11 JDK or better
70160

71-
A docker image is created in `docker/target` as jib-image.tar. You can import this docker image using a command similar to:
161+
Help:
162+
* `java -version` to ensure you have java 11 or better available
163+
* `java -jar pwm-onejar-2.0.0.jar` for command line help
72164

73-
`docker load --input=jib-image.tar`
165+
Example for running onejar executable (with /pwm-applicationPath being the location to your _applicationPath_ directory):
166+
```
167+
java -jar pwm-onejar-2.0.0.jar -applicationPath /pwm-applicationPath
168+
```
169+
By default the executable will remain attached to the console and listen for HTTPS connections on port 8443.
74170

75-
Create docker container and run using:
76171

77-
`docker run -d --name <container name> -p 8443:8443 pwm/pwm-webapp`
172+
### Docker
173+
The PWM docker image includes Java and Tomcat. It listens using https on port 8443, and has a volume exposed
174+
as `/config`. You will need to map the `/config` volume to some type of persistent docker
175+
volume for PWM to retain configuration.
78176

79-
This will expose the https port to 8443. If you want the configuration to persist to you can also expose
80-
the configuration volume of `/config` using the docker `-v` option during the container
81-
creation and map it to a directory on the docker host or use a docker volume container.
82-
The PWM docker container will place all of it's configuration and runtime data in the `/config` volume. If you do not use
83-
a separate configuration volume, the config will be deleted when you delete the container.
177+
Requirements:
178+
* Server running docker
179+
180+
Steps:
181+
182+
1. Load your docker image with image nae of default _pwm/pwm-webapp_:
183+
```
184+
docker load --input=pwm-docker-image-v2.0.0.tar
185+
```
186+
187+
1. Create docker image named _mypwm_, map to the server's 8443 port, and set the config volume to use the server's
188+
local file system _/home/user/pwm-config_ folder:
189+
```
190+
docker create --name mypwm -p '8443:8443' --mount 'type=bind,source=/home/user/pwm-config,destination=/config' pwm/pwm-webapp
191+
```
192+
193+
1. Start the _mypwm_ container:
194+
```
195+
docker start mypwm
196+
```
197+
198+
## Build
199+
200+
Build pre-requisites:
201+
* Java ( check requirements above for version )
202+
* Git
203+
* The build uses maven, but you do not need to install it; the maven wrapper in the source tree will download a local version.
204+
205+
Build steps:
206+
1. Set _JAVA_HOME_ environment variable to JDK home.
207+
1. Clone the git project
208+
1. Change to pwm directory
209+
1. Run the maven build
210+
211+
Linux example:
212+
```
213+
export JAVA_HOME="/home/vm/JavaJDKDirectory"
214+
git clone https://github.com/pwm-project/pwm
215+
cd pwm
216+
./mvnw clean verify
217+
```
218+
Windows example:
219+
```
220+
set JAVA_HOME="c:\JavaJDKDirectory"
221+
git clone https://github.com/pwm-project/pwm
222+
cd pwm
223+
mvnw.cmd clean verify
224+
```
225+
On Windows we recommend using paths without spaces (including for the JDK directory).
226+
227+
Artifacts created:
228+
229+
| Format | Directory |
230+
| --- | --- |
231+
| WAR | webapp/target |
232+
| Executable | onejar/target |
233+
| Docker | docker/target |
84234

rest-test-service/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.pwm-project</groupId>
55
<artifactId>pwm-parent</artifactId>
6-
<version>2.0.5-SNAPSHOT</version>
6+
<version>2.0.5</version>
77
<relativePath>../pom.xml</relativePath>
88
</parent>
99

server/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.pwm-project</groupId>
55
<artifactId>pwm-parent</artifactId>
6-
<version>2.0.5-SNAPSHOT</version>
6+
<version>2.0.5</version>
77
<relativePath>../pom.xml</relativePath>
88
</parent>
99

0 commit comments

Comments
 (0)