oa-pubcookie 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
data/lib/omniauth/pubcookie.rb
CHANGED
@@ -9,10 +9,6 @@ module OmniAuth
|
|
9
9
|
ldap = Net::LDAP.new :host => 'ldap.andrew.cmu.edu', :port => 389
|
10
10
|
|
11
11
|
filter = Net::LDAP::Filter.eq('cmuAndrewID', username)
|
12
|
-
attrs = ['givenName', 'sn', 'nickname', 'eduPersonSchoolCollegeName',
|
13
|
-
'cmuStudentClass', 'mail', 'cmuPreferredMail',
|
14
|
-
'cmuPersonPrincipalName']
|
15
|
-
|
16
12
|
ldap.search(:base => 'ou=Person,dc=cmu,dc=edu',
|
17
13
|
:filter => filter, :return_result => true) do |entry|
|
18
14
|
results = {}
|
@@ -6,36 +6,51 @@ module OmniAuth
|
|
6
6
|
|
7
7
|
include OmniAuth::Pubcookie::CMULdap
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
option :login_server, 'webiso.andrew.cmu.edu'
|
10
|
+
option :granting_cert, File.expand_path('../cmu_granting.cert', __FILE__)
|
11
|
+
option :name, 'pubcookie' # otherwise it thinks the provider is cmu
|
12
|
+
|
13
|
+
info do
|
14
|
+
{
|
15
|
+
:name => raw_info[:name],
|
16
|
+
:email => raw_info[:email],
|
17
|
+
:nickname => raw_info[:nickname],
|
18
|
+
:first_name => raw_info[:first_name],
|
19
|
+
:last_name => raw_info[:last_name],
|
20
|
+
:location => raw_info[:location]
|
21
|
+
}
|
15
22
|
end
|
16
23
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
'uid' => andrew_id,
|
24
|
-
'provider' => 'cmu',
|
25
|
-
'user_info' => {
|
26
|
-
'name' => attrs[:cn],
|
27
|
-
'email' => attrs[:mail],
|
28
|
-
'nickname' => attrs[:nickname],
|
29
|
-
'first_name' => attrs[:givenname],
|
30
|
-
'last_name' => attrs[:sn],
|
31
|
-
'class' => attrs[:cmustudentclass],
|
32
|
-
'department' => attrs[:cmudepartment],
|
33
|
-
'location' => attrs[:cmucampus]
|
34
|
-
},
|
35
|
-
'extra' => {'user_hash' => attrs}
|
36
|
-
})
|
24
|
+
extra do
|
25
|
+
{
|
26
|
+
:department => raw_info[:department],
|
27
|
+
:class => raw_info[:class],
|
28
|
+
:raw_info => raw_info[:ldap_attrs]
|
29
|
+
}
|
37
30
|
end
|
38
31
|
|
32
|
+
def raw_info
|
33
|
+
if @raw_info.nil?
|
34
|
+
username = extract_username(request)
|
35
|
+
andrew_id = username.match(/^(.*)@/)[1]
|
36
|
+
attrs = lookup_andrew_id andrew_id
|
37
|
+
|
38
|
+
@raw_info = {
|
39
|
+
:username => andrew_id,
|
40
|
+
:name => attrs[:cn],
|
41
|
+
:email => attrs[:mail],
|
42
|
+
:nickname => attrs[:nickname],
|
43
|
+
:first_name => attrs[:givenname],
|
44
|
+
:last_name => attrs[:sn],
|
45
|
+
:class => attrs[:cmustudentclass],
|
46
|
+
:department => attrs[:cmudepartment],
|
47
|
+
:location => attrs[:cmucampus],
|
48
|
+
:ldap_attrs => attrs
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
@raw_info
|
53
|
+
end
|
39
54
|
end
|
40
55
|
end
|
41
56
|
end
|
@@ -8,21 +8,26 @@ module OmniAuth
|
|
8
8
|
include OmniAuth::Strategy
|
9
9
|
include Rack::Pubcookie::Auth
|
10
10
|
|
11
|
-
|
11
|
+
option :return_to, '/auth/pubcookie/callback'
|
12
|
+
|
13
|
+
# Override initialize. Omniauth frowns on this
|
14
|
+
# but we need to set pubcookie_options on initialize
|
15
|
+
def initialize(app, *args, &block)
|
16
|
+
super(app, *args, &block)
|
12
17
|
self.pubcookie_options = options
|
13
|
-
super app, :pubcookie, &block
|
14
18
|
end
|
15
19
|
|
16
20
|
def request_phase
|
21
|
+
@raw_info = nil
|
17
22
|
Rack::Response.new(login_page_html).finish
|
18
23
|
end
|
19
24
|
|
20
25
|
def callback_phase
|
21
|
-
|
22
|
-
request.env['REMOTE_USER'] = username
|
26
|
+
# Part of the pubcookie spec
|
27
|
+
request.env['REMOTE_USER'] = raw_info[:username]
|
23
28
|
|
24
|
-
if username
|
25
|
-
|
29
|
+
if raw_info[:username]
|
30
|
+
self.env['omniauth.auth'] = auth_hash # provided by Omniauth now
|
26
31
|
request.env['REQUEST_METHOD'] = 'GET'
|
27
32
|
|
28
33
|
status, headers, body = call_app!
|
@@ -37,14 +42,16 @@ module OmniAuth
|
|
37
42
|
end
|
38
43
|
end
|
39
44
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
})
|
45
|
+
# unique user id
|
46
|
+
uid { raw_info[:username] }
|
47
|
+
|
48
|
+
info do
|
49
|
+
{'name' => raw_info[:username]}
|
46
50
|
end
|
47
51
|
|
52
|
+
def raw_info
|
53
|
+
@raw_info ||= {:username => extract_username(request)}
|
54
|
+
end
|
48
55
|
end
|
49
56
|
end
|
50
57
|
end
|
metadata
CHANGED
@@ -1,73 +1,70 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: oa-pubcookie
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
version: 0.0.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Alex Crichton
|
9
|
+
- Stafford Brunk
|
13
10
|
autorequire:
|
14
11
|
bindir: bin
|
15
12
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2012-01-07 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
21
16
|
name: rack-pubcookie
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &70356016614280 !ruby/object:Gem::Requirement
|
24
18
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 0
|
31
|
-
- 3
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
32
22
|
version: 0.0.3
|
33
23
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: oa-core
|
37
24
|
prerelease: false
|
38
|
-
|
25
|
+
version_requirements: *70356016614280
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: omniauth
|
28
|
+
requirement: &70356016613780 !ruby/object:Gem::Requirement
|
39
29
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
- 0
|
45
|
-
version: "0"
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.0
|
46
34
|
type: :runtime
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: net-ldap
|
50
35
|
prerelease: false
|
51
|
-
|
36
|
+
version_requirements: *70356016613780
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: net-ldap
|
39
|
+
requirement: &70356016613400 !ruby/object:Gem::Requirement
|
52
40
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
- 0
|
58
|
-
version: "0"
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
59
45
|
type: :runtime
|
60
|
-
|
61
|
-
|
62
|
-
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *70356016613400
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rack
|
50
|
+
requirement: &70356016612860 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.4.0
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *70356016612860
|
59
|
+
description: Omniauth strategy using pubcookie with special additions for CMU students
|
60
|
+
where information is fetched via LDAP
|
61
|
+
email:
|
63
62
|
- alex@crichton.co
|
63
|
+
- stafford.brunk@gmail.com
|
64
64
|
executables: []
|
65
|
-
|
66
65
|
extensions: []
|
67
|
-
|
68
66
|
extra_rdoc_files: []
|
69
|
-
|
70
|
-
files:
|
67
|
+
files:
|
71
68
|
- lib/oa-pubcookie.rb
|
72
69
|
- lib/omniauth/pubcookie.rb
|
73
70
|
- lib/omniauth/pubcookie/cmu_ldap.rb
|
@@ -75,37 +72,28 @@ files:
|
|
75
72
|
- lib/omniauth/strategies/cmu.rb
|
76
73
|
- lib/omniauth/strategies/cmu_granting.cert
|
77
74
|
- lib/omniauth/strategies/pubcookie.rb
|
78
|
-
has_rdoc: true
|
79
75
|
homepage: https://github.com/alexcrichton/oa-pubcookie
|
80
76
|
licenses: []
|
81
|
-
|
82
77
|
post_install_message:
|
83
78
|
rdoc_options: []
|
84
|
-
|
85
|
-
require_paths:
|
79
|
+
require_paths:
|
86
80
|
- lib
|
87
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
82
|
none: false
|
89
|
-
requirements:
|
90
|
-
- -
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
|
93
|
-
|
94
|
-
version: "0"
|
95
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
88
|
none: false
|
97
|
-
requirements:
|
98
|
-
- -
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
|
101
|
-
- 0
|
102
|
-
version: "0"
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
103
93
|
requirements: []
|
104
|
-
|
105
94
|
rubyforge_project:
|
106
|
-
rubygems_version: 1.
|
95
|
+
rubygems_version: 1.8.11
|
107
96
|
signing_key:
|
108
97
|
specification_version: 3
|
109
98
|
summary: Omniauth strategy using pubcookie
|
110
99
|
test_files: []
|
111
|
-
|