casino_core 0.0.6 → 1.0.0
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.
- data/VERSION +1 -1
- data/casino_core.gemspec +20 -3
- data/config/cas.yml +3 -0
- data/db/migrate/20121224113737_create_proxy_tickets.rb +15 -0
- data/db/migrate/20121225153637_add_pgt_url_to_proxy_granting_tickets.rb +11 -0
- data/db/migrate/20121225231301_proxy_granting_ticket_can_be_granted_by_proxy_ticket.rb +6 -0
- data/db/migrate/20121225231713_no_default_granter_type.rb +5 -0
- data/db/migrate/20121226192211_fix_index_for_granter_on_proxy_granting_ticket.rb +6 -0
- data/db/migrate/20121226211511_allow_service_tickets_without_ticket_granting_ticket.rb +5 -0
- data/db/schema.rb +22 -8
- data/lib/casino_core/builder.rb +7 -0
- data/lib/casino_core/builder/ticket_validation_response.rb +76 -0
- data/lib/casino_core/helper.rb +1 -0
- data/lib/casino_core/helper/proxy_granting_tickets.rb +29 -22
- data/lib/casino_core/helper/proxy_tickets.rb +61 -0
- data/lib/casino_core/helper/service_tickets.rb +1 -34
- data/lib/casino_core/model.rb +1 -0
- data/lib/casino_core/model/proxy_granting_ticket.rb +3 -2
- data/lib/casino_core/model/proxy_ticket.rb +27 -0
- data/lib/casino_core/model/service_ticket.rb +17 -4
- data/lib/casino_core/model/service_ticket/single_sign_out_notifier.rb +6 -2
- data/lib/casino_core/model/ticket_granting_ticket.rb +21 -0
- data/lib/casino_core/processor.rb +2 -0
- data/lib/casino_core/processor/legacy_validator.rb +1 -1
- data/lib/casino_core/processor/proxy_ticket_provider.rb +44 -0
- data/lib/casino_core/processor/proxy_ticket_validator.rb +27 -0
- data/lib/casino_core/processor/service_ticket_validator.rb +25 -43
- data/lib/casino_core/processor/session_destroyer.rb +3 -0
- data/lib/casino_core/settings.rb +1 -1
- data/lib/casino_core/tasks/cleanup.rake +12 -2
- data/lib/casino_core/tasks/database.rake +3 -2
- data/spec/authenticator/base_spec.rb +13 -0
- data/spec/model/proxy_ticket_spec.rb +32 -0
- data/spec/model/service_ticket_spec.rb +24 -7
- data/spec/model/ticket_granting_ticket_spec.rb +35 -0
- data/spec/processor/proxy_ticket_provider_spec.rb +75 -0
- data/spec/processor/proxy_ticket_validator_spec.rb +66 -0
- data/spec/processor/session_destroyer_spec.rb +24 -2
- data/spec/processor/ticket_validator_spec.rb +125 -0
- metadata +21 -4
- data/spec/processor/service_ticket_validator_spec.rb +0 -123
@@ -6,6 +6,13 @@ describe CASinoCore::Model::ServiceTicket do
|
|
6
6
|
ticket.ticket_granting_ticket_id = 1
|
7
7
|
ticket
|
8
8
|
}
|
9
|
+
let(:consumed_ticket) {
|
10
|
+
ticket = described_class.new ticket: 'ST-54321', service: 'https://example.com/cas-service'
|
11
|
+
ticket.ticket_granting_ticket_id = 1
|
12
|
+
ticket.consumed = true
|
13
|
+
ticket.save!
|
14
|
+
ticket
|
15
|
+
}
|
9
16
|
|
10
17
|
describe '.cleanup_unconsumed' do
|
11
18
|
it 'deletes expired unconsumed service tickets' do
|
@@ -24,9 +31,8 @@ describe CASinoCore::Model::ServiceTicket do
|
|
24
31
|
end
|
25
32
|
|
26
33
|
it 'deletes expired consumed service tickets' do
|
27
|
-
|
28
|
-
|
29
|
-
ticket.save!
|
34
|
+
consumed_ticket.created_at = 10.days.ago
|
35
|
+
consumed_ticket.save!
|
30
36
|
lambda do
|
31
37
|
described_class.cleanup_consumed
|
32
38
|
end.should change(described_class, :count).by(-1)
|
@@ -34,12 +40,23 @@ describe CASinoCore::Model::ServiceTicket do
|
|
34
40
|
end
|
35
41
|
end
|
36
42
|
|
37
|
-
describe '
|
43
|
+
describe '#destroy' do
|
38
44
|
it 'sends out a single sign out notification' do
|
39
45
|
described_class::SingleSignOutNotifier.any_instance.should_receive(:notify).and_return(true)
|
40
|
-
|
41
|
-
|
42
|
-
|
46
|
+
consumed_ticket.destroy
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'when notification fails' do
|
50
|
+
before(:each) do
|
51
|
+
described_class::SingleSignOutNotifier.any_instance.stub(:notify).and_return(false)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'does not delete the service ticket' do
|
55
|
+
consumed_ticket
|
56
|
+
lambda {
|
57
|
+
consumed_ticket.destroy
|
58
|
+
}.should_not change(CASinoCore::Model::ServiceTicket, :count)
|
59
|
+
end
|
43
60
|
end
|
44
61
|
end
|
45
62
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CASinoCore::Model::TicketGrantingTicket do
|
4
|
+
let(:subject) { described_class.create! ticket: 'TGT-3ep9awhy2ty5UhL8wM1xAZ', username: 'example-user' }
|
5
|
+
let(:service_ticket) {
|
6
|
+
subject.service_tickets.create! ticket: 'ST-12345', service: 'https://example.com/cas-service'
|
7
|
+
}
|
8
|
+
let(:consumed_service_ticket) {
|
9
|
+
service_ticket = subject.service_tickets.create! ticket: 'ST-n9oZvDtYkVFHj5M3s59Ws5', service: 'https://example.com/cas-service'
|
10
|
+
service_ticket.consumed = true
|
11
|
+
service_ticket.save!
|
12
|
+
service_ticket
|
13
|
+
}
|
14
|
+
|
15
|
+
describe '#destroy' do
|
16
|
+
context 'when notification for a service ticket fails' do
|
17
|
+
before(:each) do
|
18
|
+
CASinoCore::Model::ServiceTicket::SingleSignOutNotifier.any_instance.stub(:notify).and_return(false)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'deletes depending proxy-granting tickets' do
|
22
|
+
consumed_service_ticket.proxy_granting_tickets.create! ticket: 'PGT-12345', iou: 'PGTIOU-12345', pgt_url: 'bla'
|
23
|
+
lambda {
|
24
|
+
subject.destroy
|
25
|
+
}.should change(CASinoCore::Model::ProxyGrantingTicket, :count).by(-1)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'nullifies depending service tickets' do
|
29
|
+
lambda {
|
30
|
+
subject.destroy
|
31
|
+
}.should change { consumed_service_ticket.reload.ticket_granting_ticket_id }.from(subject.id).to(nil)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CASinoCore::Processor::ProxyTicketProvider do
|
4
|
+
describe '#process' do
|
5
|
+
let(:listener) { Object.new }
|
6
|
+
let(:processor) { described_class.new(listener) }
|
7
|
+
let(:params) { { targetService: 'this_does_not_have_to_be_a_url' } }
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
listener.stub(:request_failed)
|
11
|
+
listener.stub(:request_succeeded)
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'without proxy-granting ticket' do
|
15
|
+
it 'calls the #request_failed method on the listener' do
|
16
|
+
listener.should_receive(:request_failed)
|
17
|
+
processor.process(params)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'does not create a proxy ticket' do
|
21
|
+
lambda do
|
22
|
+
processor.process(params)
|
23
|
+
end.should_not change(CASinoCore::Model::ProxyTicket, :count)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'with a not-existing proxy-granting ticket' do
|
28
|
+
let(:params_with_deleted_pgt) { params.merge(pgt: 'PGT-123453789') }
|
29
|
+
|
30
|
+
it 'calls the #request_failed method on the listener' do
|
31
|
+
listener.should_receive(:request_failed)
|
32
|
+
processor.process(params_with_deleted_pgt)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'does not create a proxy ticket' do
|
36
|
+
lambda do
|
37
|
+
processor.process(params_with_deleted_pgt)
|
38
|
+
end.should_not change(CASinoCore::Model::ProxyTicket, :count)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'with a proxy-granting ticket' do
|
43
|
+
let(:ticket_granting_ticket) {
|
44
|
+
CASinoCore::Model::TicketGrantingTicket.create!({
|
45
|
+
ticket: 'TGC-Qu6B5IVQ7RmLc972TruM9u',
|
46
|
+
username: 'test'
|
47
|
+
})
|
48
|
+
}
|
49
|
+
let(:service_ticket) { ticket_granting_ticket.service_tickets.create! ticket: 'ST-2nOcXx56dtPTsB069yYf0h', service: 'http://www.example.com/' }
|
50
|
+
let(:proxy_granting_ticket) {
|
51
|
+
service_ticket.proxy_granting_tickets.create! ticket: 'PGT-OIE42ZadV3B9VcaG2xMjAf', iou: 'PGTIOU-PYg4CCPQHNyyS9s6bJF6Rg', pgt_url: 'https://www.example.com/pgtUrl'
|
52
|
+
}
|
53
|
+
let(:params_with_valid_pgt) { params.merge(pgt: proxy_granting_ticket.ticket) }
|
54
|
+
|
55
|
+
it 'calls the #request_succeeded method on the listener' do
|
56
|
+
listener.should_receive(:request_succeeded)
|
57
|
+
processor.process(params_with_valid_pgt)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'does not create a proxy ticket' do
|
61
|
+
lambda do
|
62
|
+
processor.process(params_with_valid_pgt)
|
63
|
+
end.should change(proxy_granting_ticket.proxy_tickets, :count).by(1)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'includes the proxy ticket in the response' do
|
67
|
+
listener.should_receive(:request_succeeded) do |response|
|
68
|
+
proxy_ticket = CASinoCore::Model::ProxyTicket.last
|
69
|
+
response.should =~ /<cas:proxyTicket>#{proxy_ticket.ticket}<\/cas:proxyTicket>/
|
70
|
+
end
|
71
|
+
processor.process(params_with_valid_pgt)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CASinoCore::Processor::ProxyTicketValidator do
|
4
|
+
let(:listener) { Object.new }
|
5
|
+
let(:processor) { described_class.new(listener) }
|
6
|
+
|
7
|
+
describe '#process' do
|
8
|
+
let(:regex_success) { /\A<cas:serviceResponse.*\n.*authenticationSuccess/ }
|
9
|
+
|
10
|
+
context 'with an unconsumed proxy ticket' do
|
11
|
+
let(:ticket_granting_ticket) {
|
12
|
+
CASinoCore::Model::TicketGrantingTicket.create!({
|
13
|
+
ticket: 'TGC-Qu6B5IVQ7RmLc972TruM9u',
|
14
|
+
username: 'test'
|
15
|
+
})
|
16
|
+
}
|
17
|
+
let(:service_ticket) { ticket_granting_ticket.service_tickets.create! ticket: 'ST-2nOcXx56dtPTsB069yYf0h', service: 'http://www.example.com/' }
|
18
|
+
let(:proxy_granting_ticket) {
|
19
|
+
service_ticket.proxy_granting_tickets.create! ticket: 'PGT-OIE42ZadV3B9VcaG2xMjAf', iou: 'PGTIOU-PYg4CCPQHNyyS9s6bJF6Rg', pgt_url: 'https://www.example.com/pgtUrl'
|
20
|
+
}
|
21
|
+
let(:proxy_service) { 'imaps://127.0.0.1:4578/' }
|
22
|
+
let(:proxy_ticket) { proxy_granting_ticket.proxy_tickets.create! ticket: 'PT-8nA7vuxuNY7RcpVoaDvuZi', service: proxy_service }
|
23
|
+
let(:parameters) { { ticket: proxy_ticket.ticket, service: proxy_service } }
|
24
|
+
let(:regex_proxy) { /<cas:proxies>\s*<cas:proxy>https:\/\/www.example.com\/pgtUrl<\/cas:proxy>\s*<\/cas:proxies[>]/ }
|
25
|
+
|
26
|
+
it 'calls the #validation_succeeded method on the listener' do
|
27
|
+
listener.should_receive(:validation_succeeded).with(regex_success)
|
28
|
+
processor.process(parameters)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'includes the proxy in the response' do
|
32
|
+
listener.should_receive(:validation_succeeded).with(regex_proxy)
|
33
|
+
processor.process(parameters)
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'with an expired proxy ticket' do
|
37
|
+
before(:each) do
|
38
|
+
CASinoCore::Model::ProxyTicket.any_instance.stub(:expired?).and_return(true)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'calls the #validation_failed method on the listener' do
|
42
|
+
listener.should_receive(:validation_failed)
|
43
|
+
processor.process(parameters)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'with an other service' do
|
48
|
+
let(:parameters_with_other_service) { parameters.merge(service: 'this_is_another_service') }
|
49
|
+
|
50
|
+
it 'calls the #validation_failed method on the listener' do
|
51
|
+
listener.should_receive(:validation_failed)
|
52
|
+
processor.process(parameters_with_other_service)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'without an existing ticket' do
|
57
|
+
let(:parameters_without_existing_ticket) { { ticket: 'PT-1234', service: 'https://www.example.com/' } }
|
58
|
+
|
59
|
+
it 'calls the #validation_failed method on the listener' do
|
60
|
+
listener.should_receive(:validation_failed)
|
61
|
+
processor.process(parameters_without_existing_ticket)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -29,6 +29,15 @@ describe CASinoCore::Processor::SessionDestroyer do
|
|
29
29
|
user_agent: user_agent
|
30
30
|
})
|
31
31
|
}
|
32
|
+
let(:service_ticket) {
|
33
|
+
ticket_granting_ticket.service_tickets.create! ticket: 'ST-6NBRr5DAg2NW181H5chaHh', service: 'http://www.example.com'
|
34
|
+
}
|
35
|
+
let(:consumed_service_ticket) {
|
36
|
+
st = ticket_granting_ticket.service_tickets.create! ticket: 'ST-6NBRr5DAg2NW181H5chaHh', service: 'http://www.example.com'
|
37
|
+
st.consumed = true
|
38
|
+
st.save!
|
39
|
+
st
|
40
|
+
}
|
32
41
|
let(:params) { { id: ticket_granting_ticket.id } }
|
33
42
|
|
34
43
|
it 'deletes only one ticket-granting ticket' do
|
@@ -48,15 +57,28 @@ describe CASinoCore::Processor::SessionDestroyer do
|
|
48
57
|
listener.should_receive(:ticket_deleted).with(no_args)
|
49
58
|
processor.process(params, cookies, user_agent)
|
50
59
|
end
|
60
|
+
|
61
|
+
it 'deletes the dependent service ticket' do
|
62
|
+
service_ticket.ticket # creates the service ticket
|
63
|
+
lambda {
|
64
|
+
processor.process(params, cookies, user_agent)
|
65
|
+
}.should change(CASinoCore::Model::ServiceTicket, :count).by(-1)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'nullifies the dependent service ticket if destroying fails' do
|
69
|
+
lambda {
|
70
|
+
processor.process(params, cookies, user_agent)
|
71
|
+
}.should change { consumed_service_ticket.reload.ticket_granting_ticket_id }.to(nil)
|
72
|
+
end
|
51
73
|
end
|
52
74
|
|
53
|
-
context 'with an
|
75
|
+
context 'with an invalid ticket-granting ticket' do
|
54
76
|
let(:params) { { id: 99999 } }
|
55
77
|
it 'does not delete a ticket-granting ticket' do
|
56
78
|
owner_ticket_granting_ticket
|
57
79
|
lambda do
|
58
80
|
processor.process(params, cookies, user_agent)
|
59
|
-
end.
|
81
|
+
end.should_not change(CASinoCore::Model::TicketGrantingTicket, :count)
|
60
82
|
end
|
61
83
|
|
62
84
|
it 'calls the #ticket_not_found method on the listener' do
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
[CASinoCore::Processor::ServiceTicketValidator, CASinoCore::Processor::ProxyTicketValidator].each do |class_under_test|
|
4
|
+
describe class_under_test do
|
5
|
+
describe '#process' do
|
6
|
+
let(:listener) { Object.new }
|
7
|
+
let(:processor) { described_class.new(listener) }
|
8
|
+
let(:user_agent) { 'TestBrowser 1.0' }
|
9
|
+
let(:ticket_granting_ticket) {
|
10
|
+
CASinoCore::Model::TicketGrantingTicket.create!({
|
11
|
+
ticket: 'TGC-HXdkW233TsRtiqYGq4b8U7',
|
12
|
+
username: 'test',
|
13
|
+
extra_attributes: { name: "Example User", roles: ['User', 'Admin'] },
|
14
|
+
user_agent: user_agent
|
15
|
+
})
|
16
|
+
}
|
17
|
+
let(:service) { 'https://www.example.com/cas-service' }
|
18
|
+
let(:service_ticket) { ticket_granting_ticket.service_tickets.create! ticket: 'ST-2nOcXx56dtPTsB069yYf0h', service: service }
|
19
|
+
let(:parameters) { { service: service, ticket: service_ticket.ticket }}
|
20
|
+
|
21
|
+
let(:regex_failure) { /\A\<cas\:serviceResponse.*\n.*authenticationFailure/ }
|
22
|
+
let(:regex_success) { /\A\<cas\:serviceResponse.*\n.*authenticationSuccess/ }
|
23
|
+
|
24
|
+
before(:each) do
|
25
|
+
listener.stub(:validation_failed)
|
26
|
+
listener.stub(:validation_succeeded)
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'with an unconsumed service ticket' do
|
30
|
+
context 'without renew flag' do
|
31
|
+
it 'consumes the service ticket' do
|
32
|
+
processor.process(parameters)
|
33
|
+
service_ticket.reload
|
34
|
+
service_ticket.consumed.should == true
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'calls the #validation_succeeded method on the listener' do
|
38
|
+
listener.should_receive(:validation_succeeded).with(regex_success)
|
39
|
+
processor.process(parameters)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'with renew flag' do
|
44
|
+
let(:parameters_with_renew) { parameters.merge renew: 'true' }
|
45
|
+
|
46
|
+
context 'with a service ticket without issued_from_credentials flag' do
|
47
|
+
it 'consumes the service ticket' do
|
48
|
+
processor.process(parameters_with_renew)
|
49
|
+
service_ticket.reload
|
50
|
+
service_ticket.consumed.should == true
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'calls the #validation_failed method on the listener' do
|
54
|
+
listener.should_receive(:validation_failed).with(regex_failure)
|
55
|
+
processor.process(parameters_with_renew)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'with a service ticket with issued_from_credentials flag' do
|
60
|
+
before(:each) do
|
61
|
+
service_ticket.issued_from_credentials = true
|
62
|
+
service_ticket.save!
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'consumes the service ticket' do
|
66
|
+
processor.process(parameters_with_renew)
|
67
|
+
service_ticket.reload
|
68
|
+
service_ticket.consumed.should == true
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'calls the #validation_succeeded method on the listener' do
|
72
|
+
listener.should_receive(:validation_succeeded).with(regex_success)
|
73
|
+
processor.process(parameters_with_renew)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'with proxy-granting ticket callback server' do
|
79
|
+
let(:parameters_with_pgt_url) { parameters.merge pgtUrl: "https://www.example.org" }
|
80
|
+
|
81
|
+
before(:each) do
|
82
|
+
stub_request(:get, /https:\/\/www\.example\.org\/\?pgtId=[^&]+&pgtIou=[^&]+/)
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'calls the #validation_succeeded method on the listener' do
|
86
|
+
listener.should_receive(:validation_succeeded).with(regex_success)
|
87
|
+
processor.process(parameters_with_pgt_url)
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'includes the PGTIOU in the response' do
|
91
|
+
listener.should_receive(:validation_succeeded).with(/\<cas\:proxyGrantingTicket\>\n?\s*PGTIOU-.+/)
|
92
|
+
processor.process(parameters_with_pgt_url)
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'creates a proxy-granting ticket' do
|
96
|
+
lambda do
|
97
|
+
processor.process(parameters_with_pgt_url)
|
98
|
+
end.should change(service_ticket.proxy_granting_tickets, :count).by(1)
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'contacts the callback server' do
|
102
|
+
processor.process(parameters_with_pgt_url)
|
103
|
+
proxy_granting_ticket = CASinoCore::Model::ProxyGrantingTicket.last
|
104
|
+
WebMock.should have_requested(:get, 'https://www.example.org').with(query: {
|
105
|
+
pgtId: proxy_granting_ticket.ticket,
|
106
|
+
pgtIou: proxy_granting_ticket.iou
|
107
|
+
})
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context 'with a consumed service ticket' do
|
113
|
+
before(:each) do
|
114
|
+
service_ticket.consumed = true
|
115
|
+
service_ticket.save!
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'calls the #validation_failed method on the listener' do
|
119
|
+
listener.should_receive(:validation_failed).with(regex_failure)
|
120
|
+
processor.process(parameters)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: casino_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0
|
5
|
+
version: 1.0.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Nils Caspar
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-12-
|
13
|
+
date: 2012-12-26 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -179,21 +179,31 @@ files:
|
|
179
179
|
- db/migrate/20121125185415_create_proxy_granting_tickets.rb
|
180
180
|
- db/migrate/20121125190013_tickets_should_be_unique.rb
|
181
181
|
- db/migrate/20121223135227_proxy_granting_tickets_belongs_to_service_ticket.rb
|
182
|
+
- db/migrate/20121224113737_create_proxy_tickets.rb
|
183
|
+
- db/migrate/20121225153637_add_pgt_url_to_proxy_granting_tickets.rb
|
184
|
+
- db/migrate/20121225231301_proxy_granting_ticket_can_be_granted_by_proxy_ticket.rb
|
185
|
+
- db/migrate/20121225231713_no_default_granter_type.rb
|
186
|
+
- db/migrate/20121226192211_fix_index_for_granter_on_proxy_granting_ticket.rb
|
187
|
+
- db/migrate/20121226211511_allow_service_tickets_without_ticket_granting_ticket.rb
|
182
188
|
- db/schema.rb
|
183
189
|
- lib/casino_core.rb
|
184
190
|
- lib/casino_core/authenticator.rb
|
185
191
|
- lib/casino_core/authenticator/static.rb
|
192
|
+
- lib/casino_core/builder.rb
|
193
|
+
- lib/casino_core/builder/ticket_validation_response.rb
|
186
194
|
- lib/casino_core/helper.rb
|
187
195
|
- lib/casino_core/helper/browser.rb
|
188
196
|
- lib/casino_core/helper/logger.rb
|
189
197
|
- lib/casino_core/helper/login_tickets.rb
|
190
198
|
- lib/casino_core/helper/proxy_granting_tickets.rb
|
199
|
+
- lib/casino_core/helper/proxy_tickets.rb
|
191
200
|
- lib/casino_core/helper/service_tickets.rb
|
192
201
|
- lib/casino_core/helper/ticket_granting_tickets.rb
|
193
202
|
- lib/casino_core/helper/tickets.rb
|
194
203
|
- lib/casino_core/model.rb
|
195
204
|
- lib/casino_core/model/login_ticket.rb
|
196
205
|
- lib/casino_core/model/proxy_granting_ticket.rb
|
206
|
+
- lib/casino_core/model/proxy_ticket.rb
|
197
207
|
- lib/casino_core/model/service_ticket.rb
|
198
208
|
- lib/casino_core/model/service_ticket/single_sign_out_notifier.rb
|
199
209
|
- lib/casino_core/model/ticket_granting_ticket.rb
|
@@ -202,6 +212,8 @@ files:
|
|
202
212
|
- lib/casino_core/processor/login_credential_acceptor.rb
|
203
213
|
- lib/casino_core/processor/login_credential_requestor.rb
|
204
214
|
- lib/casino_core/processor/logout.rb
|
215
|
+
- lib/casino_core/processor/proxy_ticket_provider.rb
|
216
|
+
- lib/casino_core/processor/proxy_ticket_validator.rb
|
205
217
|
- lib/casino_core/processor/service_ticket_validator.rb
|
206
218
|
- lib/casino_core/processor/session_destroyer.rb
|
207
219
|
- lib/casino_core/processor/session_overview.rb
|
@@ -210,16 +222,21 @@ files:
|
|
210
222
|
- lib/casino_core/settings.rb
|
211
223
|
- lib/casino_core/tasks/cleanup.rake
|
212
224
|
- lib/casino_core/tasks/database.rake
|
225
|
+
- spec/authenticator/base_spec.rb
|
213
226
|
- spec/authenticator/static_spec.rb
|
214
227
|
- spec/model/login_ticket_spec.rb
|
228
|
+
- spec/model/proxy_ticket_spec.rb
|
215
229
|
- spec/model/service_ticket_spec.rb
|
230
|
+
- spec/model/ticket_granting_ticket_spec.rb
|
216
231
|
- spec/processor/legacy_validator_spec.rb
|
217
232
|
- spec/processor/login_credential_acceptor_spec.rb
|
218
233
|
- spec/processor/login_credential_requestor_spec.rb
|
219
234
|
- spec/processor/logout_spec.rb
|
220
|
-
- spec/processor/
|
235
|
+
- spec/processor/proxy_ticket_provider_spec.rb
|
236
|
+
- spec/processor/proxy_ticket_validator_spec.rb
|
221
237
|
- spec/processor/session_destroyer_spec.rb
|
222
238
|
- spec/processor/session_overview_spec.rb
|
239
|
+
- spec/processor/ticket_validator_spec.rb
|
223
240
|
- spec/spec_helper.rb
|
224
241
|
homepage: http://github.com/pencil/CASinoCore
|
225
242
|
licenses:
|
@@ -234,7 +251,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
234
251
|
requirements:
|
235
252
|
- - ">="
|
236
253
|
- !ruby/object:Gem::Version
|
237
|
-
hash:
|
254
|
+
hash: 218008976937004289
|
238
255
|
segments:
|
239
256
|
- 0
|
240
257
|
version: "0"
|