1
|
Introduction
|
2
|
============
|
3
|
|
4
|
Central Authentication Services (CAS) is a commonly used Single Sign-On
|
5
|
protocol used by many universities and large organizations. For a brief
|
6
|
introduction, please see the Jasig website: http://www.jasig.org/cas/about
|
7
|
|
8
|
The Drupal CAS project has two modules:
|
9
|
|
10
|
* CAS:
|
11
|
Drupal acts as a CAS client, allowing users to authenticate with a
|
12
|
separate single sign-on CAS server.
|
13
|
|
14
|
* CAS Server:
|
15
|
Drupal acts as a CAS server.
|
16
|
|
17
|
Do NOT enable both modules at the same time, as it may lead to unpredictable
|
18
|
results.
|
19
|
|
20
|
The following README.txt covers the CAS module only. If you are interested in
|
21
|
the CAS Server module, please see README_SERVER.txt
|
22
|
|
23
|
Requirements
|
24
|
============
|
25
|
PHP 5 with the following modules:
|
26
|
curl, openssl, dom, zlib, and xml
|
27
|
phpCAS version 1.0.0 or later.
|
28
|
|
29
|
Installation
|
30
|
============
|
31
|
|
32
|
* Place the cas folder in your Drupal modules directory.
|
33
|
|
34
|
* Download phpCAS from https://wiki.jasig.org/display/CASC/phpCAS. You will
|
35
|
need version 1.0.0 or later. The most recent release is available at
|
36
|
http://downloads.jasig.org/cas-clients/php/current.tgz
|
37
|
|
38
|
* There are several locations you can install the phpCAS library.
|
39
|
|
40
|
1. Module directory installation. This means installing the library folder
|
41
|
under the moduels directory, so that the file
|
42
|
sites/<site>/modules/cas/CAS/CAS.php exists.
|
43
|
|
44
|
2. System wide installation. See the phpCAS installation guide, currently at
|
45
|
https://wiki.jasig.org/display/CASC/phpCAS+installation+guide
|
46
|
|
47
|
3. Libraries API installation. Install and enable the Libraries API module,
|
48
|
available at http://drupal.org/project/libraries. Then extract phpCAS so
|
49
|
that sites/<site>/libraries/CAS/CAS.php exists. For example:
|
50
|
$ cd sites/all/libraries
|
51
|
$ curl http://downloads.jasig.org/cas-clients/php/current.tgz | tar xz
|
52
|
$ mv CAS-* CAS
|
53
|
|
54
|
* Go to Administer > Modules and enable this module.
|
55
|
|
56
|
* Go to Administer > Configuration > People > CAS to configure the CAS module.
|
57
|
Depending on where and how you installed the phpCAS library, you may need
|
58
|
to configure the path to CAS.php. The current library version will be
|
59
|
displayed if the library is found.
|
60
|
|
61
|
Configuration & Workflow
|
62
|
========================
|
63
|
|
64
|
For the purposes of this example, assume the following configuration:
|
65
|
* https://auth.example.com/cas - Your organization's CAS server
|
66
|
* http://site.example.com/ - This Drupal site using the CAS module
|
67
|
|
68
|
Configure the CAS module:
|
69
|
* Log in to the Drupal site and navigate to Admin > Configuration > People >
|
70
|
Central Authentication Services.
|
71
|
* Point the CAS module at the CAS server:
|
72
|
- Hostname: auth.example.com
|
73
|
- Port: 443
|
74
|
- URI: /cas
|
75
|
* Configure user accounts:
|
76
|
- Decide if you want to automatically create Drupal user accounts for each
|
77
|
CAS-authenticated user. If you leave this option deselected, you will
|
78
|
have to manually add a paired Drupal account for every one of your users
|
79
|
in advance.
|
80
|
- Hide the Drupal password field if your users will never know (or need to
|
81
|
know) their Drupal password.
|
82
|
* Configure the login form(s):
|
83
|
- There are four ways that a user can start the CAS authentication
|
84
|
process:
|
85
|
1. Visit http://site.example.com/cas
|
86
|
This option is always available and is good for embedding a text
|
87
|
"Login" link in your theme. (See the note to themers below).
|
88
|
|
89
|
2. Click on a CAS Login menu link.
|
90
|
The menu item is disabled by default, but may be enabled in
|
91
|
Admin > Structure > Menus. You should find the link in the
|
92
|
"Navigation" menu.
|
93
|
|
94
|
3. Select the CAS login option on the Drupal login form.
|
95
|
The CAS login option needs to be added to the login form in the
|
96
|
CAS settings.
|
97
|
|
98
|
4. Use the CAS login block.
|
99
|
The CAS login block may be enabled in Admin > Structure > Blocks.
|
100
|
|
101
|
Note to Themers
|
102
|
===============
|
103
|
|
104
|
You may want to include a text CAS "Login" link in your theme. If you simply
|
105
|
link to "/cas", you will find that your users are redirected to the site
|
106
|
frontpage after they are authenticated. To redirect your users to the page
|
107
|
they were previously on, instead use:
|
108
|
|
109
|
<?php
|
110
|
print l(t('Login'), 'cas', array('query' => drupal_get_destination()));
|
111
|
?>
|
112
|
|
113
|
Upgrading from 6.x-2.x / Associating CAS usernames with Drupal users
|
114
|
=====================================================================
|
115
|
|
116
|
The following options have been depreciated:
|
117
|
* "Is Drupal also the CAS user repository?"
|
118
|
* "If Drupal is not the user repository, should CAS hijack users with the same name?"
|
119
|
|
120
|
The CAS module uses a lookup table (cas_user) to associate CAS usernames with
|
121
|
their corresponding Drupal user ids. The depreciated options bypassed this
|
122
|
lookup table and let users log in if their CAS username matched their Drupal
|
123
|
name. The update.php script has automatically inserted entries into the lookup
|
124
|
table so that your users will continue to be able to log in as before.
|
125
|
|
126
|
You can see the results of the update script and manage CAS usernames on the
|
127
|
"Administration >> People" (admin/people) page. A new column displays CAS
|
128
|
usernames, and the bulk operations drop-down includes options for rapidly
|
129
|
creating and removing CAS usernames. The "Create CAS username" option will
|
130
|
assign a CAS username to each selected account that matches their Drupal name.
|
131
|
The "Remove CAS usernames" option will remove all CAS usernames from the
|
132
|
selected accounts.
|
133
|
|
134
|
API Changes Since 6.x-2.x
|
135
|
=========================
|
136
|
The hooks hook_auth_name() and hook_auth_filter() were combined and renamed
|
137
|
to hook_cas_user_alter(). See cas.api.php.
|
138
|
|
139
|
Testing
|
140
|
=======
|
141
|
The CAS module comes with built-in test routines. To enable testing on a
|
142
|
development site, enable the 'Testing' module. Then navigate to Admin >
|
143
|
Configuration > Development > Testing. The CAS test routines are available
|
144
|
under "Central Authentication Service".
|
145
|
|
146
|
Note, the CAS test routines will automatically download phpCAS from the JASIG
|
147
|
website, to ensure a version compatible with the test routines, and so that
|
148
|
the tests may run successfully on qa.drupal.org.
|