rubycas-client 0.10.0 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. data/README +49 -22
  2. data/init.rb +1 -0
  3. data/install.rb +4 -0
  4. data/lib/cas_auth.rb +0 -17
  5. metadata +3 -2
data/README CHANGED
@@ -1,9 +1,9 @@
1
1
  = RubyCAS-Client
2
2
 
3
- Author:: Ola Bini <ola.bini AT ki DOT se>, Matt Zukowski <matt AT roughest DOT net>
3
+ Author:: Ola Bini <ola.bini AT ki DOT se>, Matt Zukowski <matt AT roughest DOT net>, Matt Walker <mwalker AT tamu DOT edu>
4
4
  Copyright:: (c) 2006 Karolinska Institutet, portions (c) 2006 Urbacon Ltd.
5
5
  License:: GNU Lesser General Public License v2.1 (LGPL 2.1)
6
- Website:: http://rubyforge.org/projects/rubycas-client
6
+ Website:: http://rubyforge.org/projects/rubycas-client and http://code.google.com/p/rubycas-client
7
7
 
8
8
  === RubyCAS-Client is a Ruby client library for Yale's Central Authentication Service (CAS) protocol.
9
9
 
@@ -21,10 +21,10 @@ This CAS client library is designed to work easily with Rails, but can of course
21
21
 
22
22
  == Installing
23
23
 
24
- You can always download the latest version of RubyCAS-Client from the project's rubyforge page at http://rubyforge.org/projects/rubycas-client,
25
- however probably the easiest way to install CAS support into your Rails app is via the plugins facility:
24
+ You can always download the latest version of RubyCAS-Client from the project's rubyforge page at http://rubyforge.org/projects/rubycas-client.
25
+ However probably the easiest way to install CAS support into your Rails app is via the plugins facility:
26
26
 
27
- ./script/plugin install http://rubycas-client.rubyforge.org/plugin/current
27
+ ./script/plugin install http://rubycas-client.rubyforge.org/plugin/rubycas-client
28
28
 
29
29
  Alternatively, the library is also available as a gem, which can be installed by:
30
30
 
@@ -32,34 +32,32 @@ Alternatively, the library is also available as a gem, which can be installed by
32
32
 
33
33
  The latest development version is availabe via subversion:
34
34
 
35
- svn checkout svn://rubyforge.org/var/svn/rubycas-client/trunk/ruby
35
+ ./script/plugin install -x http://rubycas-client.googlecode.com/svn/trunk/rubycas-client
36
36
 
37
- Or you can install the latest development version into your Rails app as a plugin:
38
-
39
- ./script/plugin install -x svn://rubyforge.org/var/svn/rubycas-client/trunk/ruby
40
-
41
- Please contact the developers via the {rubyforge.org page}[svn checkout svn://rubyforge.org/var/svn/rubycas-client] if you have bug fixes
37
+ Please contact the developers via the {rubyforge.org page}[http://rubyforge.org/projects/rubycas-client] if you have bug fixes
42
38
  or enhancements you would like to contribute back.
43
39
 
44
40
  == Examples
45
41
 
46
42
  ==== Here is an example of how to use the library in your Rails application:
47
43
 
48
- Somewhere in your +config/environment.rb+ file add this (assuming that you have RubyCAS-Client installed as a plugin, otherwise
49
- you'll need to +require 'cas_auth'+ and +require 'cas_proxy_callback_controller'+):
44
+ Somewhere in your <tt>config/environment.rb</tt> file add this (assuming that you have RubyCAS-Client installed as a plugin, otherwise
45
+ you'll need to <tt>require 'cas_auth'</tt> and <tt>require 'cas_proxy_callback_controller'</tt>):
50
46
 
51
47
  CAS::Filter.cas_base_url = "https://login.example.com/cas"
52
48
 
53
- Then, in your +app/controllers/application.rb+ (or in whatever controller you want to add the CAS filter for):
49
+ Then, in your <tt>app/controllers/application.rb</tt> (or in whatever controller you want to add the CAS filter for):
54
50
 
55
51
  before_filter CAS::Filter
56
52
 
57
- That's it. You should now find that you are redirected to your CAS login page when you try to access any action
58
- in your protected controller. You can of course qualify the +before_filter+ as you would with any other ActionController
59
- filter. For example: +before_filter CAS::Filter, :except => [ :unprotected_action, :another_unprotected_action ]
53
+ That's it. You should now find that you are redirected to your CAS login page whenever you try to access any action
54
+ in your protected controller. You can of course qualify the <tt>before_filter</tt> as you would with any other ActionController
55
+ filter. For example:
56
+
57
+ before_filter CAS::Filter, :except => [ :unprotected_action, :another_unprotected_action ]
60
58
 
61
- <b>Once the user has been authenticated, their authenticated username is available under +request.username+
62
- (and also under +session[:casfilteruser]+).</b> If you want to do something with this username (for example load a
59
+ <b>Once the user has been authenticated, their authenticated username is available under <tt>request.username</tt></b>
60
+ (and also under <tt>session[:casfilteruser]</tt>). If you want to do something with this username (for example load a
63
61
  user record from the database), you can append another filter method that checks for this value and does whatever you need
64
62
  it to do.
65
63
 
@@ -94,18 +92,36 @@ when your application requests to act as a CAS proxy, the CAS server must contac
94
92
  Confused? Don't worry, you don't really have to understand this to use it. To enable your Rails app to act as a CAS proxy,
95
93
  all you need to do is this:
96
94
 
97
- In your +config/environment.rb+:
95
+ In your <tt>config/environment.rb</tt>:
98
96
 
99
97
  CAS::Filter.cas_base_url = "https://login.example.com/cas"
100
98
  CAS::Filter.proxy_callback_url = "https://yourrailsapp.com/cas_proxy_callback/receive_pgt"
101
99
  CAS::Filter.proxy_retrieval_url = "https://yourrailsapp.com/cas_proxy_callback/retrieve_pgt"
102
100
 
103
- In +config/routes.rb+ make sure that you have a route that will allow requests to /cas_proxy_callback/:action to be routed to the
101
+ In <tt>config/routes.rb</tt> make sure that you have a route that will allow requests to /cas_proxy_callback/:action to be routed to the
104
102
  CasProxyCallbackController. This should work as-is with the standard Rails routes setup, but if you have disabled the default
105
103
  route, you should add the following:
106
104
 
107
105
  map.cas_proxy_callback 'cas_proxy_callback/:action', :controller => 'cas_proxy_callback'
108
106
 
107
+ Now here's a big giant caveat: <b>your CAS callback application and your CAS proxy application must run on separate Rails servers</b>.
108
+ In other words, if you want a Rails app to act as a CAS ticket-granting proxy, the cas_proxy_callback controller
109
+ must run on a different server. This is because Rails does not properly support handling of concurrent requests. The CAS proxy mechanism
110
+ acts in such a way that if your proxy application and your callback controller were on the same server
111
+ you would end up with a deadlock (the CAS server would be waiting for its callback to be accepted by your Rails server,
112
+ but your Rails server wouldn't respond to the CAS server's callback until the CAS server responded back first).
113
+
114
+ The simplest workaround is this:
115
+
116
+ 1. Create an empty rails app (i.e. something like <tt>rails cas_proxy_callback</tt>)
117
+ 2. Make sure that you have the CAS plugin installed. If you installed it as a gem, you don't have to do anything since
118
+ it is already installed. If you want to install as a plugin, see the instructions in the "Installing" section above.
119
+ 3. Make sure that the server is up and running, and configure your proxy_callback_url and proxy_retrieval_url to point
120
+ to the new server as described above (or rather, make Pound point to the new server, if that's how you're handling https).
121
+
122
+ That's it. The proxy_callback_controller doesn't require any additional configuration. It doesn't access the database
123
+ or anything of that sort.
124
+
109
125
  Once your user logs in to CAS via your application, you can do the following to obtain a service ticket that can then be used
110
126
  to authenticate another application:
111
127
 
@@ -113,7 +129,7 @@ to authenticate another application:
113
129
  proxy_granting_ticket = session[:casfilterpgt]
114
130
  ticket = CAS::Filter.request_proxy_ticket(service_uri, proxy_granting_ticket)
115
131
 
116
- +ticket+ should now contain a valid service ticket. You can use it to authenticate your other by sending it and the service URI
132
+ <tt>ticket</tt> should now contain a valid service ticket. You can use it to authenticate your other by sending it and the service URI
117
133
  as query parameters to your target application:
118
134
 
119
135
  http://some.other.application?service=#{ticket.target_service}&ticket=#{ticket.proxy_ticket}
@@ -145,6 +161,17 @@ to your Rails application. Also, note that <i>self-signed SSL certificates likel
145
161
  a real certificate purchased from a trusted CA authority (there are ways around this, but good luck :)
146
162
 
147
163
 
164
+ == SSL Support
165
+
166
+ If you are getting an error on net/https -- something like this:
167
+
168
+ no such file to load -- net/https
169
+
170
+ Then make sure the library for open SSL is installed. For example, on an Debian/Ubuntu system issue the following:
171
+
172
+ sudo apt-get install libopenssl-ruby
173
+
174
+
148
175
  == License
149
176
 
150
177
  This program is free software; you can redistribute it and/or modify
data/init.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'cas_auth'
2
+ require 'cas_proxy_callback_controller'
2
3
 
3
4
  #CAS::Filter.logger = RAILS_DEFAULT_LOGGER if !RAILS_DEFAULT_LOGGER.nil?
4
5
  #CAS::Filter.logger = config.logger if !config.logger.nil?
data/install.rb CHANGED
@@ -1 +1,5 @@
1
1
  # Install hook code here
2
+ #parent_dir = File.dirname(File.expand_path(__FILE__))
3
+ #grandparent_dir = File.dirname(parent_dir)
4
+ #
5
+ #File.rename(parent_dir, grandparent_dir+"/rubycas-client")
data/lib/cas_auth.rb CHANGED
@@ -1,23 +1,6 @@
1
- # RubyCAS-Client is a client and Rails filter for the CAS protocol.
2
- # Copyright (c) 2006 Karolinska Institutet
3
- #
4
- # This program is free software; you can redistribute it and/or modify
5
- # it under the terms of the GNU General Public License as published by
6
- # the Free Software Foundation; either version 2 of the License
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with this program; if not, write to the Free Software Foundation,
15
- # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16
-
17
1
  require 'uri'
18
2
  require 'logger'
19
3
 
20
-
21
4
  require File.dirname(File.expand_path(__FILE__))+'/cas'
22
5
 
23
6
  module CAS
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: rubycas-client
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.10.0
7
- date: 2006-09-07 00:00:00 -04:00
6
+ version: 0.10.1
7
+ date: 2006-10-11 00:00:00 -04:00
8
8
  summary: Client library for the CAS single-sign-on protocol.
9
9
  require_paths:
10
10
  - lib
@@ -27,6 +27,7 @@ signing_key:
27
27
  cert_chain:
28
28
  authors:
29
29
  - Matt Zukowski
30
+ - Ola Bini
30
31
  - Matt Walker
31
32
  files:
32
33
  - install.rb