PluginProbe
Authorizer / 2.8.5
Authorizer v2.8.5
3.15.3 3.15.2 3.15.1 3.15.0 3.14.3 3.14.4 3.14.2 3.14.1 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.9.0 2.9.1 2.9.10 2.9.11 2.9.12 2.9.13 2.9.2 2.9.3 2.9.6 All 126 releases
authorizer / readme.txt

readme.txt in Authorizer 2.8.5, at readme.txt

437 lines 24.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 === Authorizer ===
2 Contributors: figureone, the_magician, pkarjala, aargh-a-knot, elarequi, jojaba
3 Tags: cas, ldap, google, google plus, login, authentication, authorization, access, education, limit login attempts, oauth
4 Requires at least: 4.4
5 Tested up to: 4.9.1
6 Stable tag: trunk
7 License: GPLv2 or later
8 License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
10 Authorizer limits login attempts, restricts access to specified users, and authenticates against external sources (e.g., Google, LDAP, or CAS).
11
12 == Description ==
13
14 *Authorizer* restricts access to a WordPress site to specific users, typically students enrolled in a university course. It maintains a list of approved users that you can edit to determine who has access. It also replaces the default WordPress login/authorization system with one relying on an external server, such as Google, CAS, or LDAP. Finally, *Authorizer* lets you limit invalid login attempts to prevent bots from compromising your users' accounts.
15
16 View or contribute to the plugin source on Github: [https://github.com/uhm-coe/authorizer](https://github.com/uhm-coe/authorizer)
17
18 *Authorizer* requires the following:
19
20 * **CAS server** (2.x, 3.x, 4.x, or 5.x) or **LDAP server** (plugin needs the URL)
21 * PHP extensions: php-ldap, php-curl, php-dom
22
23 *Authorizer* provides the following options:
24
25 * **Authentication**: WordPress accounts; Google accounts; CAS accounts; LDAP accounts
26 * **Login Access**: All authenticated users (all local and all external can log in); Only specific users (all local and approved external users can log in)
27 * **View Access**: Everyone (open access); Only logged in users
28 * **Limit Login Attempts**: Progressively increase the amount of time required between invalid login attempts.
29
30 == Installation ==
31
32 1. Upload the `authorizer` directory to the `/wp-content/plugins/` directory
33 1. Activate the plugin through the 'Plugins' menu in WordPress
34 1. Specify your server details in the 'Settings' menu in WordPress
35
36 == Frequently Asked Questions ==
37
38 = Help! I've disabled WordPress logins, my external logins (Google/CAS/LDAP) aren't working, and now I can't get back in! =
39
40 If you add external=wordpress to the wp-login.php URL querystring, you can always get the WordPress login form to reappear. For example, if your site is at [https://www.example.com](https://www.example.com), then the URL would be: [https://www.example.com/wp-login.php?external=wordpress](https://www.example.com/wp-login.php?external=wordpress)
41
42 = Where is this plugin used? =
43
44 The [University of Hawai'i][uh], which provides authentication for student, faculty, and staff members via a centralized service (CAS or LDAP).
45
46 [uh]: http://hawaii.edu/
47
48 == Screenshots ==
49
50 1. WordPress Login screen with Google Logins and CAS Logins enabled.
51 2. Authorizer Dashboard Widget.
52 3. Authorizer Options: Access Lists.
53 4. Authorizer Options: Login Access.
54 5. Authorizer Options: Public Access.
55 6. Authorizer Options: External Service.
56 7. Authorizer Options: Advanced.
57 8. Authorizer Network Admin Options (disabled).
58 9. Authorizer Network Admin Options: Access Lists.
59 10. Authorizer Network Admin Options: External Service.
60 11. Authorizer Network Admin Options: Advanced.
61 12. Authorizer Option overridden by a Network Admin Option.
62
63 == Changelog ==
64
65 = 2.8.5 =
66 * Update phpCAS library from 1.3.5 to 1.3.6. PHP 7.2 users running CAS are now fully supported. Props @julienlusson for the pull request!
67
68 = 2.8.4 =
69 * Fix when inviting existing users to a blog in multisite and setting a role with a display name that doesn't match the role name. Props @julienlusson for finding the bug!
70
71 = 2.8.3 =
72 * Fix for using wp-cli to activate the plugin (broke in 2.8.0). Props @timkite for the discovery!
73 * Fix for network-activating authorizer via wp-cli.
74
75 = 2.8.2 =
76 * Revert overly strict querystring sanitization (caused CAS login problems in servers that don’t encode forward slashes as %2F in querystring values). Props @anamba for the report and bug testing!
77
78 = 2.8.1 =
79 * Force asset reload (coding standards changed the formatting of a lot of js and css assets).
80
81 = 2.8.0 =
82 * Add authorizer_ldap_search_filter filter (for customizing the LDAP search filter to further restrict LDAP logins). Props @jesus33c for the idea!
83 * Add authorizer_user_register action. Props @pablo-tapia for the suggestion!
84 * Allow CAS servers behind redirected URLs. Props @cwhunt for the code!
85 * Check CAS server reachability by testing serviceValidate endpoint. Props @cwhunt for the code!
86 * Allow "No role for this site" as a default role for new users. Props @julienlusson for the pull request!
87 * Update French translations. Props @julienlusson for the pull request!
88 * Update code to follow WordPress coding standards (php, css, js). Props @michaeldfoley for fixing a bug with our overzealous sanitization!
89 * Update cacert.pem.
90 * Fix bug with paging on network approved user list.
91 * Note: this version requires WordPress 4.4 or later.
92
93 = 2.7.2 =
94 * Fix Approved User list sort when set to Date approved / Descending (was still showing as ascending).
95 * Support multiple LDAP search bases. Props @jmutsaerts for the feature request.
96
97 = 2.7.1 =
98 * Compatibility fix for PHP < 5.5. Props @klausdk for the report!
99 * Additional fix for role not getting set when adding an existing user to a site in multisite. Props @julienlusson for the fix!
100
101 = 2.7.0 =
102 * Feature: Approve multiple users at once (by pasting their email addresses into the new approved user field, separated by newlines, spaces, commas, or semicolons).
103 * Feature: Paging, sorting, and searching in the Approved User list for sites with many users (finally!).
104 * Update LDAP TLS option for clarity. Props @Scriptkiddi for the pull request!
105 * Support deprecated multisite constant BLOGID_CURRENT_SITE in addition to BLOG_ID_CURRENT_SITE. Props @er2576 for tracking that down!
106 * Fix for CAS logouts not working in some situations (remove CAS isAuthenticated() check before CAS logout).
107 * Fix for updating approved list entry when an email address change is made on the WordPress user profile page in a multisite environment.
108 * Fix for role not getting set when creating and adding a new user to a blog in multisite. Props @julienlusson for the report and @pkarjala for the fix!
109
110 = 2.6.23 =
111 * Added ability to disable the dashboard widget (useful on sites with many users until paged user lists are implemented).
112 * Fix for the multisite option override link always going to the External Services tab.
113 * Fix for hide/show of Login Access options when certain options are selected.
114
115 = 2.6.22 =
116 * Fix for regression showing certain private posts. Props @InvisibleMass for finding the bug!
117 * Fix for users without the php-mbstring extension installed.
118 * Update jQuery multi-select plugin from 0.9.8 to 0.9.12.
119 * Fix for bug in syncing user roles during login. Props @dsusco for the pull request!
120
121 = 2.6.21 =
122 * Fix broken logins caused by regression on previous fix for multivalued email attribute
123
124 = 2.6.20 =
125 * Fix for issue with incorrect parsing of an array of email addresses to be converted to lowercase.
126 * Fix for nonce cookie issue on google logins where cookie was being sent after headers, resulting in an error message.
127
128 = 2.6.19 =
129 * Fix for issue with case sensitivity checks on user emails affecting role assignments, user deletions, and user updates in Authorizer. All existing uppercase emails in Authorizer will migrate to lowercase as users log in. Thank you again to @mmcglynn for continued extensive help in testing.
130 * Update CAS server connection check to accept 300 response codes as valid presence of a CAS server. It is the administrator's duty to ensure that a redirect on their CAS url is acceptable.
131
132 = 2.6.18 =
133 * Fix for issue with approved list roles not updating correctly when changed using the authorizer_custom_role hook. Thank you to @mmcglynn for extensive help in testing.
134 * Fix for issue with removing user's roles when removing them from a multisite WordPress install.
135
136 = 2.6.17 =
137 * Fix for approved list roles not updating if changed on the fly in authorizer_custom_role hook.
138 * Update phpCAS from 1.3.4 to 1.3.5. See [changelog](https://github.com/Jasig/phpCAS/blob/master/docs/ChangeLog).
139
140 = 2.6.16 =
141 * Fix: Remove user's role when removing them from the approved list. This is a security feature, in case a removed user is presumed deleted from the site. Since Authorizer does not delete users (to avoid the issue of reassigning or deleting that user’s content), removing their role removes all capabilities from the site until they are re-added to the approved list.
142
143 = 2.6.15 =
144 * Fix for duplicate users in approved list (users added via authorizer_automatically_approve_login filter were re-added to approved list each time they logged in).
145
146 = 2.6.14 =
147 * Move nonce cookie creation to the first time it is needed (for Google logins). Props @emsearcy for the pull request!
148
149 = 2.6.13 =
150 * Respect redirect_to param on CAS logout (if param exists). Props @dgoldber for finding that!
151
152 = 2.6.12 =
153 * Better detection of fuzzy permalink matches for private pages. Applies if site is restricted but 404 pages are marked as public; if this was the case, anonymous visitors to malformed permalinks (e.g., “example.com/sample page” or “example.com/sample%20page” instead of “example.com/sample-page”) were able to see the restricted page. Props @6hogan for finding that!
154
155 = 2.6.11 =
156 * Fix for CAS logins redirecting to the redirect_to param of wp-login.php.
157 * Fix for redirect after CAS logout on some CAS servers requiring whitelisted services (add a trailing slash to the logout service param).
158
159 = 2.6.10 =
160 * Allow multiple whitelisted domains under Google Hosted Domain. Props Michael K. for the suggestion!
161 * Drop php-mcrypt library dependency (use openssl library instead since mcrypt is deprecated as of PHP 7.1).
162 * Fix for some CAS servers redirecting to improper WordPress destination. Props @asithade for the [pull request](https://github.com/uhm-coe/authorizer/pull/29)!
163 * Fix for mixed-case LDAP attribute names (first name, last name, email) not being recognized because ldap_get_entries() returns attirbute names in lowercase. Props @yatesconsulting for the [report](https://github.com/uhm-coe/authorizer/issues/27)!
164 * Fix for immediate CAS redirect hook firing after content was sent to browser, triggering a PHP warning if output buffering isn't enabled on the web server. Props @steven1350 for reporting the bug!
165
166 = 2.6.9 =
167 * Fix for LDAP logins failing if the user password contained a single quote, double quote, or a backslash. Props @alxbr for the research!
168
169 = 2.6.8 =
170 * Fix for edge case where a network approved user wouldn't be allowed to visit wp-admin on a site they had not been added to yet.
171 * Fix for quotation marks in LDAP password causing LDAP bind to fail.
172 * Fix for issues with marking translated (via WPML) categories public. Props @mafoti for the pull request!
173 * Fix for placeholder text for plugin option fields being mistaken for actual values. Props @pkarjala for the pull request!
174 * Fix for blocked flag in usermeta not getting removed when unblocking a user.
175 * Feature: Add filter to inspect CAS attributes and automatically approve a user based on any values there. Example:
176 ```
177 /**
178 * Filter whether to automatically approve the currently logging in user
179 * based on any of their user attributes.
180 *
181 * @param bool $automatically_approve_login
182 * Whether to automatically approve the currently logging in user.
183 * @param array $user_data User data returned from external service.
184 */
185 function approve_all_faculty_logins( $automatically_approve_login, $user_data ) {
186 // Automatically approve logins for all faculty members.
187 if (
188 isset( $user_data['cas_attributes']['eduPersonAffiliation'] ) &&
189 'faculty' === $user_data['cas_attributes']['eduPersonAffiliation']
190 ) {
191 $automatically_approve_login = true;
192 }
193 return $automatically_approve_login;
194 }
195 add_filter( 'authorizer_automatically_approve_login', 'approve_all_faculty_logins', 10, 2 );
196 ```
197
198
199 = 2.6.7 =
200 * Support LDAP URI in hostname field (e.g., ldaps://ldap.example.edu:636). Props @timkite for your contribution!
201 * Update translatable strings.
202 * Simplify CAS login routine.
203
204 = 2.6.6 =
205 * Fix for mixed line endings in phpCAS library, causing warnings when running PHP Compatibility Checker plugin. Props @wpgirl369/@eshannon3 for the pull request!
206 * Fix: Never block access to super admins (or admins in single site mode). Props @eizzumdm and @nreljin!
207 * Add user to network approved list when they are granted super admin privileges on the Edit User screen outside of Authorizer. Remove user from network approved list when this is revoked (and readd them to the approved list on any site they are currently a member of).
208 * Fix for notification emails sent to all site users if plugin wasn't correctly activated.
209 * Handle CAS servers that return an email address in response to phpCAS::getUser()
210
211 = 2.6.5 =
212 * Use wp_remote_get() instead of curl to check CAS server availability. php-curl is no longer a dependency.
213 * Fix for error introduced in last version with cacert.pem updating.
214
215 = 2.6.4 =
216 * Use wp_safe_remote_get() instead of file_get_contents() to update cacert.pem. Props @kriswme2!
217 * Fix error message shown when login form is first shown and LDAP is enabled. Props @akompanas!
218 * Fix for lengthy timeout if ldap_start_tls() fails when connecting to an LDAP server. Props @TJuberg!
219 * Fix a bug preventing first-time login of an approved user when a WordPress user already existed with the same username (but a different email address).
220 * Remove the spinner overlay when logging in via Google (user could accidentally close the Google sign-in popup, and the spinner prevented them from reopening it by clicking on the "Sign In with Google" button).
221 * Clean up plugin files (rename 'inc' directory to 'vendor').
222 * Fix for CAS version option being selectable when it's been multisite overridden.
223 * Fix for missing translatable string (anonymous access message in bootstrap dismissible alert).
224 * Show all roles in all sites on the Approved Users role dropdown in network admin.
225 * Make sure role is updated on all sites when approving a new multisite user that already exists in WordPress.
226
227 = 2.6.3 =
228 * Feature: Add user to authorizer approved list when added from the Users screen.
229 * Feature: In multisite, add approved user to all approved sites on first login.
230 * Feature: Sync role and email address in approved list when changed elsewhere.
231 * Feature: Add super admins to network approved list on plugin activation.
232 * Feature: Allow "no role for this site" selection for user roles.
233 * Fix for existing WordPress user logging in: make sure they are in the approved list.
234 * Fix for local (WordPress) authentication not respecting the blocked list.
235 * Fix for whitespace and "mailto:" in emails (trim when clicking approve button).
236 * Fix for external=wordpress safety login not working if option to immediately redirect to CAS is enabled.
237 * Fix for deprecation warning in WordPress 4.6: wp_get_sites().
238 * Fix for deprecation warning in WordPress 4.6: wp_new_user_notification().
239 * Fix for multisite users not being removed from pending lists.
240 * Improve code efficiency.
241
242 = 2.6.2 =
243 * Revert LDAP/CAS email domain guessing logic (some existing users rely on the old method to determine email address domains). If email domain or CAS/LDAP attribute containing email address is not specified in Authorizer options, guess that email domain is the last two components of the CAS/LDAP host when splitting by periods (e.g., authn.example.com would return an email domain of example.com).
244
245 = 2.6.1 =
246 * Tested up to WordPress 4.6.1.
247 * Update cacert.pem file.
248
249 = 2.6.0 =
250 * Tested up to WordPress 4.6.
251 * Feature: Add method for constructing email address for CAS/LDAP servers that don't return an email attribute. Simply enter @yourdomain.edu into the mail attribute field to have email addresses be constructed as username@yourdomain.edu.
252 * Fix: Updates to cacerts.pem for CAS servers now works for WordPress installs behind a proxy. Props dchambel! https://github.com/uhm-coe/authorizer/pull/13
253 * Feature: Allow restricting Google logins to a single Google Apps hosted domain (e.g., mycollege.edu).
254 * Update google-api-php-client from 1.0.5-beta to 1.1.5.
255 * Fix for REST API integration: Authorizer will now deny read/view access via the REST API if the site is private and the user is not authenticated. Other REST API access is unaffected by Authorizer, and is managed by the REST API authentication schema (cookie, oauth, or basic authentication). See [http://v2.wp-api.org/guide/authentication/](http://v2.wp-api.org/guide/authentication/) for details.
256 * Fix: Warn if php_openssl.dll is not installed on Windows servers (cannot update cacert.pem if it's missing).
257 * Fix for mcrypt key length error in php 5.6 and higher.
258 * Fix for broken newlines in notification emails (also update translations).
259 * Feature: Customize user roles based on CAS or LDAP attributes. Example:
260 ```
261 /**
262 * Filter the default role of the currently logging in user based on any of
263 * their user attributes.
264 *
265 * @param string $default_role Default role of the currently logging in user.
266 * @param array $user_data User data returned from external service.
267 */
268 function my_authorizer_custom_role( $default_role, $user_data ) {
269 // Allow library guests to log in via CAS, but only grant them 'subscriber' role.
270 if (
271 isset( $user_data['cas_attributes']['eduPersonPrimaryAffiliation'] ) &&
272 'library-walk-in' === $user_data['cas_attributes']['eduPersonPrimaryAffiliation']
273 ) {
274 $default_role = 'subscriber';
275 }
276 return $default_role;
277 }
278 add_filter( 'authorizer_custom_role', 'my_authorizer_custom_role', 10, 2 );
279 ```
280
281 = 2.5.1 =
282 * Updated Spanish translations. Props @elarequi.
283 * Fix: Include translatable strings found in javascript files.
284 * Fix: Force lowercase emails from LDAP. Props @akompanas.
285 * Fix: Set some LDAP defaults likely to be the same on all installs
: ldap_port, ldap_attr_username.
286 * Fix: Construct LDAP default email domain from LDAP search base, not from host (helps to differentiate between subdomain installs and domains with country codes).
287
288 = 2.5.0 =
289 * Translations: Props to @elarequi for wrapping text strings in the translation functions and for providing Spanish translations.
290 - Fichero authorizer.php: Se preparan todas las cadenas necesarias, para hacerlas traducibles.
291 - Se crea el directorio /languages, con los ficheros de traducción.
292 * Translations: Props @jojaba for providing French translations.
293 * Feature: Allow 404 pages to be shown publicly on restricted sites.
294 * Feature: Add filter to inspect CAS attributes and deny access based on any values there. Props @jojaba for the suggestion. Example:
295 ```
296 /**
297 * Filter whether to block the currently logging in user based on any of their
298 * user attributes.
299 *
300 * @param bool $allow_login Whether to block the currently logging in user.
301 * @param array $user_data User data returned from external service.
302 */
303 function check_cas_attributes( $allow_login, $user_data ) {
304 // Block access to CAS logins from library guests.
305 if (
306 isset( $user_data['cas_attributes']['eduPersonPrimaryAffiliation'] ) &&
307 'library-walk-in' === $user_data['cas_attributes']['eduPersonPrimaryAffiliation']
308 ) {
309 $allow_login = false;
310 }
311 return $allow_login;
312 }
313 add_filter( 'authorizer_allow_login', 'check_cas_attributes', 10, 2 );
314 ```
315
316 * Feature: Add action for inspecting attributes returned from CAS.
317 * Fix: Users deleted in WordPress will be removed from Authorizer lists. Props @jojaba for catching that.
318 * Fix: Some plugin options were getting reset when switching between multisite and single site modes. Props @jojaba for finding it.
319 * Fix: Save button in multisite options was unavailable when disabling multisite override.
320 * Cleaned up code complexity. Props @mackensen for the pull requests.
321
322 = 2.4.0 =
323 * Feature: Add option to log into CAS automatically (only if no other external service is configured, and only if WordPress logins are hidden). Props @manakuke for the idea!
324 * Feature: Option to configure older CAS server versions (SAML_VERSION_1_1, CAS_VERSION_3_0, CAS_VERSION_2_0, CAS_VERSION_1_0). Props @autredr for the suggestion and helping debug!
325 * Fix: Better CAS server availability checking. Props @autredr for the code!
326 * Documentation: readme.txt now includes the URL to access WordPress logins if they've been disabled.
327 * Update phpCAS from 1.3.3 to 1.3.4. See [changelog](https://github.com/Jasig/phpCAS/blob/master/docs/ChangeLog).
328 * Fix for [WordPress REST API (Version 2)](https://wordpress.org/plugins/rest-api/) bypassing Authorizer restricted access. Props @nurbson for the report.
329
330 = 2.3.12 =
331 * The username of new LDAP users will be the value of the attribute specified in "LDAP attribute containing username" instead of the portion of their email address before the @ symbol.
332
333 = 2.3.11 =
334 * Fix for issue with LDAP logins created in the last update. Props @ebraux for the [report](https://wordpress.org/support/topic/ldap-external-stopped-working-since-updating-to-2410)!
335
336 = 2.3.10 =
337 * Handle multiple email addresses registered to a single CAS login (if any are blocked, the user is blocked; otherwise if any are approved, the user is approved).
338 * Better error reporting on CAS errors.
339
340 = 2.3.9 =
341 * Fix for conflict with [WordPress REST API (Version 2)](https://wordpress.org/plugins/rest-api/) plugin. Props @nurbson for the report.
342
343 = 2.3.8 =
344 * Fix for a fringe case where WordPress users removed from the approved list weren't blocked from accessing a site restricted to approved users.
345
346 = 2.3.7 =
347 * Feature: Show number of users in pending, approved, and blocked lists on Authorizer options page. Props @manakuke for the idea!
348
349 = 2.3.6 =
350 * Feature: Allow anonymous LDAP binds.
351 * Fix: Concurrency issue with large number of approved users. Props @manakuke.
352
353 = 2.3.5 =
354 * Feature: Allow individual sites in a network/multisite install to override Authorizer's multisite settings and be configured independently.
355
356 = 2.3.4 =
357 * Quick fix: Remove user lists from post data when saving options (fixes an issue with hitting apache/php post size limits when 5000+ approved users exist).
358
359 = 2.3.3 =
360 * Fix: disappearing usermeta box if server is unreachable.
361 * Update documentation with supported CAS versions.
362 * Feature: Allow posts to be marked as public on restricted access sites.
363 * Feature: Allow categories to be marked as public on restricted access sites.
364
365 = 2.3.2 =
366 * Feature: Add the ability to specify which CAS or LDAP attribute contains the user's email address. Useful for organizations that use an ID or something other than an email to authenticate.
367 * Feature: You can now choose an ACF field to show next to users in the approved list. It will show a dropdown with the available values if the field type is select, and an input[text] otherwise.
368 * Fix: Preapproved users' usermeta or ACF values get saved and applied when they log in for the first time.
369 * Fix: ACF5 and ACF4 fields are now listed as options for the usermeta field.
370
371 = 2.3.1 =
372 * Fix: Skip SSL check when checking if a CAS server is reachable.
373 * Fix: Pressing enter on Access List form elements now does the right thing.
374 * Feature: Update first and last names from CAS or LDAP attributes.
375
376 = 2.3.0 =
377 * Fix: Site admins in a network can only access authorizer if the following option is enabled in Network Settings: "Allow site administrators to add new users to their site via the "Users → Add New" page." Props @aargh-a-knot.
378 * Fix: Block user button wasn't correctly moving a user from the approved list to the blocked list.
379 * Fix: Settings link in plugins list now correctly goes to the Authorizer page if it is shown in the top level menu.
380 * Enhancement: New icon for authorizer in the plugin directory.
381 * Enhancement: images have been optimized with ImageOptim.
382 * Enhancement: Banner in multisite options aligns better when update notifications are present.
383 * Enhancement: Checkbox and radio option labels are now clickable in authorizer options.
384 * Verified compatibility with WordPress 4.3.1.
385
386 = 2.2.4 =
387 * fix: only run cas or google logout routines if the current user was authenticated by one of those services
388 * Thu Apr 16, 2015
389
390 = 2.2.3 =
391 * 2.2.3: fix for multisite function being called on non-multisite installs (prevented plugin installation)
392 * Thu Apr 16, 2015
393
394 = 2.2 =
395 * 2.2.0: Urgent fix for assets folder (deploy script missed it)
396 * 2.2.1: readme fix
397 * 2.2.2: asset fix
398 * Wed Apr 1, 2015
399
400 = 2.1 =
401 * Updates and bug fixes.
402 * Wed Apr 1, 2015
403
404 = 2.0 =
405 * First public release.
406 * Tue Jun 3, 2014
407
408 = 1.6 =
409 * Allow multiple external services to be enabled at once.
410 * Mon May 26, 2014
411
412 = 1.5 =
413 * Add Google Logins support
414 * Thu May 22, 2014
415
416 = 1.1 =
417 * Rename to Authorizer
418 * Add LDAP support
419 * Wed Mar 12, 2014
420
421 = 1.0 =
422 * First stable release.
423 * Wed Aug 14, 2013
424
425 = 0.2 =
426 * Switch to CAS instead of LDAP/Sakai.
427 * Thu Jul 11, 2013
428
429 = 0.1 =
430 * Initial development build.
431 * Wed Apr 10, 2013
432
433 == Upgrade Notice ==
434
435 = 1.0 =
436 Upgrade now to get the latest features.
437