omniauth-uaa-oauth2 0.0.7 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +7 -2
- data/Gemfile +1 -1
- data/README.md +9 -19
- data/examples/config.ru +1 -14
- data/lib/omniauth/cloudfoundry.rb +0 -13
- data/lib/omniauth/strategies/cloudfoundry.rb +15 -21
- data/lib/omniauth/uaa_oauth2/version.rb +1 -14
- data/lib/omniauth-uaa-oauth2.rb +0 -13
- data/omniauth-uaa-oauth2.gemspec +0 -13
- data/spec/omniauth/strategies/uaa_oauth2_spec.rb +16 -5
- metadata +1 -2
- data/Gemfile.lock +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e8de9c63b6c5f6302ff2188fcb99045128f8af146d6014c8a0e26403e23e7b0
|
4
|
+
data.tar.gz: 995fc9391a8e7c91d6464adc34565a825f7c6853877e4b1467326043e38aeb21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85a906769d31270b17cf11c0ee1c9f2f905ff7fe2d36d7024a522ffb3d2da756714854f8e3ff71b237944ab11794dbf60161ca44d115986c8c05732a57a3ae0c
|
7
|
+
data.tar.gz: 88982fdba7d3fc827a892bf0fc3317e8261ce7fd1b2d0cd94c9c7730d8d6c9b157bbe6d2f88b1c2d1e82f99dc52fad7c67d0ae0d5767c0689e60162a2633a1b6
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -3,28 +3,18 @@ CloudFoundry UAA OmniAuth Strategy
|
|
3
3
|
|
4
4
|
OmniAuth strategy for authenticating users using the CloudFoundry UAA server.
|
5
5
|
|
6
|
-
|
6
|
+
Add the following to your `Gemfile`:
|
7
7
|
|
8
|
-
|
8
|
+
```text
|
9
|
+
gem 'omniauth-uaa-oauth2'
|
10
|
+
```
|
9
11
|
|
10
|
-
|
12
|
+
For example usage see:
|
11
13
|
|
12
|
-
|
14
|
+
* the `examples/config.ru` sample code
|
15
|
+
* https://github.com/starkandwayne/ultimate-guide-to-uaa-examples/tree/master/ruby/omniauth-login-only
|
16
|
+
* https://github.com/starkandwayne/ultimate-guide-to-uaa-examples/tree/master/ruby/omniauth-login-and-uaa-api-calls
|
17
|
+
* https://github.com/starkandwayne/ultimate-guide-to-uaa-examples/tree/master/ruby/resource-server-wrapper-ui
|
13
18
|
|
14
|
-
see: https://rvm.io/ or http://rbenv.org/
|
15
|
-
|
16
|
-
Build and install the cf-uaa-lib gem located at https://github.com/cloudfoundry/cf-uaa-lib
|
17
|
-
|
18
|
-
Build the gem
|
19
|
-
|
20
|
-
$ bundle install
|
21
|
-
$ bundle exec gem build omniauth-uaa-oauth2.gemspec
|
22
|
-
|
23
|
-
Install it
|
24
|
-
|
25
|
-
$ gem install omniauth-uaa-oauth2-*.gem
|
26
|
-
|
27
|
-
|
28
|
-
See the examples folder for details on how to use it.
|
29
19
|
|
30
20
|
Warning: Unlike the omniauth-oauth2 gem, this gem does not support the oauth2 'state' security parameter.
|
data/examples/config.ru
CHANGED
@@ -1,16 +1,3 @@
|
|
1
|
-
#--
|
2
|
-
# Cloud Foundry 2012.02.03 Beta
|
3
|
-
# Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
|
4
|
-
#
|
5
|
-
# This product is licensed to you under the Apache License, Version 2.0 (the "License").
|
6
|
-
# You may not use this product except in compliance with the License.
|
7
|
-
#
|
8
|
-
# This product includes a number of subcomponents with
|
9
|
-
# separate copyright notices and license terms. Your use of these
|
10
|
-
# subcomponents is subject to the terms and conditions of the
|
11
|
-
# subcomponent's license, as noted in the LICENSE file.
|
12
|
-
#++
|
13
|
-
|
14
1
|
# Run with "bundle exec rackup"
|
15
2
|
|
16
3
|
require 'rubygems'
|
@@ -32,7 +19,7 @@ class App < Sinatra::Base
|
|
32
19
|
content_type 'application/json'
|
33
20
|
request.env['omniauth.auth'].to_hash.to_json rescue "No Data"
|
34
21
|
end
|
35
|
-
|
22
|
+
|
36
23
|
get '/auth/failure' do
|
37
24
|
content_type 'text/plain'
|
38
25
|
request.env['omniauth.auth'].to_hash.inspect rescue "No Data"
|
@@ -1,14 +1 @@
|
|
1
|
-
#--
|
2
|
-
# Cloud Foundry 2012.02.03 Beta
|
3
|
-
# Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
|
4
|
-
#
|
5
|
-
# This product is licensed to you under the Apache License, Version 2.0 (the "License").
|
6
|
-
# You may not use this product except in compliance with the License.
|
7
|
-
#
|
8
|
-
# This product includes a number of subcomponents with
|
9
|
-
# separate copyright notices and license terms. Your use of these
|
10
|
-
# subcomponents is subject to the terms and conditions of the
|
11
|
-
# subcomponent's license, as noted in the LICENSE file.
|
12
|
-
#++
|
13
|
-
|
14
1
|
require 'omniauth/strategies/cloudfoundry'
|
@@ -1,16 +1,3 @@
|
|
1
|
-
#--
|
2
|
-
# Cloud Foundry 2012.02.03 Beta
|
3
|
-
# Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
|
4
|
-
#
|
5
|
-
# This product is licensed to you under the Apache License, Version 2.0 (the "License").
|
6
|
-
# You may not use this product except in compliance with the License.
|
7
|
-
#
|
8
|
-
# This product includes a number of subcomponents with
|
9
|
-
# separate copyright notices and license terms. Your use of these
|
10
|
-
# subcomponents is subject to the terms and conditions of the
|
11
|
-
# subcomponent's license, as noted in the LICENSE file.
|
12
|
-
#++
|
13
|
-
|
14
1
|
require 'uaa'
|
15
2
|
require 'omniauth'
|
16
3
|
require 'timeout'
|
@@ -48,6 +35,8 @@ module OmniAuth
|
|
48
35
|
option :scope, nil
|
49
36
|
option :async_calls, false
|
50
37
|
option :skip_ssl_validation, false
|
38
|
+
option :ssl_ca_file, nil
|
39
|
+
option :ssl_cert_store, nil
|
51
40
|
|
52
41
|
attr_accessor :access_token
|
53
42
|
attr_reader :token_issuer
|
@@ -78,8 +67,10 @@ module OmniAuth
|
|
78
67
|
options.client_id,
|
79
68
|
options.client_secret,
|
80
69
|
{
|
81
|
-
:
|
82
|
-
:
|
70
|
+
token_target: @token_server_url,
|
71
|
+
ssl_ca_file: options.ssl_ca_file,
|
72
|
+
ssl_cert_store: options.ssl_cert_store,
|
73
|
+
skip_ssl_validation: options.skip_ssl_validation
|
83
74
|
})
|
84
75
|
log :info, "Client: #{options.client_id} auth_server: #{@auth_server_url} token_server: #{@token_server_url}"
|
85
76
|
@token_issuer.logger = OmniAuth.logger
|
@@ -91,7 +82,9 @@ module OmniAuth
|
|
91
82
|
def uaa_info
|
92
83
|
@uaa_info ||= CF::UAA::Info.new(
|
93
84
|
@token_server_url,
|
94
|
-
:
|
85
|
+
ssl_ca_file: options.ssl_ca_file,
|
86
|
+
ssl_cert_store: options.ssl_cert_store,
|
87
|
+
skip_ssl_validation: options.skip_ssl_validation
|
95
88
|
)
|
96
89
|
end
|
97
90
|
|
@@ -144,10 +137,10 @@ module OmniAuth
|
|
144
137
|
|
145
138
|
info do
|
146
139
|
prune!({
|
147
|
-
:
|
148
|
-
:
|
149
|
-
:
|
150
|
-
:
|
140
|
+
name: raw_info["name"],
|
141
|
+
email: raw_info["email"],
|
142
|
+
first_name: raw_info["given_name"],
|
143
|
+
last_name: raw_info["family_name"]
|
151
144
|
})
|
152
145
|
end
|
153
146
|
|
@@ -187,7 +180,8 @@ module OmniAuth
|
|
187
180
|
|
188
181
|
def expired?(access_token)
|
189
182
|
access_token = access_token.auth_header if access_token.respond_to? :auth_header
|
190
|
-
|
183
|
+
# Don't need to verify signature of token if we're just inspecting its expiry date
|
184
|
+
expiry = CF::UAA::TokenCoder.decode(access_token.split()[1], verify: false, symbolize_keys: true)[:expires_at]
|
191
185
|
expiry.is_a?(Integer) && expiry <= Time.now.to_i
|
192
186
|
end
|
193
187
|
|
@@ -1,18 +1,5 @@
|
|
1
|
-
#--
|
2
|
-
# Cloud Foundry 2012.02.03 Beta
|
3
|
-
# Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
|
4
|
-
#
|
5
|
-
# This product is licensed to you under the Apache License, Version 2.0 (the "License").
|
6
|
-
# You may not use this product except in compliance with the License.
|
7
|
-
#
|
8
|
-
# This product includes a number of subcomponents with
|
9
|
-
# separate copyright notices and license terms. Your use of these
|
10
|
-
# subcomponents is subject to the terms and conditions of the
|
11
|
-
# subcomponent's license, as noted in the LICENSE file.
|
12
|
-
#++
|
13
|
-
|
14
1
|
module OmniAuth
|
15
2
|
module Cloudfoundry
|
16
|
-
VERSION = "0.0
|
3
|
+
VERSION = "1.0.0"
|
17
4
|
end
|
18
5
|
end
|
data/lib/omniauth-uaa-oauth2.rb
CHANGED
@@ -1,14 +1 @@
|
|
1
|
-
#--
|
2
|
-
# Cloud Foundry 2012.02.03 Beta
|
3
|
-
# Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
|
4
|
-
#
|
5
|
-
# This product is licensed to you under the Apache License, Version 2.0 (the "License").
|
6
|
-
# You may not use this product except in compliance with the License.
|
7
|
-
#
|
8
|
-
# This product includes a number of subcomponents with
|
9
|
-
# separate copyright notices and license terms. Your use of these
|
10
|
-
# subcomponents is subject to the terms and conditions of the
|
11
|
-
# subcomponent's license, as noted in the LICENSE file.
|
12
|
-
#++
|
13
|
-
|
14
1
|
require "omniauth/cloudfoundry"
|
data/omniauth-uaa-oauth2.gemspec
CHANGED
@@ -1,17 +1,4 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
#
|
3
|
-
# Cloud Foundry 2012.02.03 Beta
|
4
|
-
# Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
|
5
|
-
#
|
6
|
-
# This product is licensed to you under the Apache License, Version 2.0 (the "License").
|
7
|
-
# You may not use this product except in compliance with the License.
|
8
|
-
#
|
9
|
-
# This product includes a number of subcomponents with
|
10
|
-
# separate copyright notices and license terms. Your use of these
|
11
|
-
# subcomponents is subject to the terms and conditions of the
|
12
|
-
# subcomponent's license, as noted in the LICENSE file.
|
13
|
-
#
|
14
|
-
|
15
2
|
require File.expand_path('../lib/omniauth/uaa_oauth2/version', __FILE__)
|
16
3
|
|
17
4
|
Gem::Specification.new do |gem|
|
@@ -31,21 +31,21 @@ describe OmniAuth::Strategies::Cloudfoundry do
|
|
31
31
|
|
32
32
|
describe 'set auth and token server' do
|
33
33
|
it 'should set the right auth and token server' do
|
34
|
-
@options = {:
|
34
|
+
@options = {auth_server_url: 'https://login.cloudfoundry.com'}
|
35
35
|
subject.client
|
36
36
|
subject.auth_server_url.should eq('https://login.cloudfoundry.com')
|
37
37
|
subject.token_server_url.should eq('https://login.cloudfoundry.com')
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'should set the right auth and token server if independently set' do
|
41
|
-
@options = {:
|
41
|
+
@options = {auth_server_url: 'https://login.cloudfoundry.com', token_server_url: 'https://uaa.cloudfoundry.com'}
|
42
42
|
subject.client
|
43
43
|
subject.auth_server_url.should eq('https://login.cloudfoundry.com')
|
44
44
|
subject.token_server_url.should eq('https://uaa.cloudfoundry.com')
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'should set the right auth and token server' do
|
48
|
-
@options = {:
|
48
|
+
@options = {auth_server_url: 'login.cloudfoundry.com'}
|
49
49
|
subject.client
|
50
50
|
subject.auth_server_url.should eq('https://login.cloudfoundry.com')
|
51
51
|
subject.token_server_url.should eq('https://login.cloudfoundry.com')
|
@@ -111,13 +111,13 @@ describe OmniAuth::Strategies::Cloudfoundry do
|
|
111
111
|
|
112
112
|
describe 'set scopes' do
|
113
113
|
it 'should set the right scopes if requested' do
|
114
|
-
@options = {:
|
114
|
+
@options = {auth_server_url: 'https://login.cloudfoundry.com', token_server_url: 'https://uaa.cloudfoundry.com', :scope => "openid cloud_controller.read"}
|
115
115
|
subject.client
|
116
116
|
subject.options[:scope].should eq("openid cloud_controller.read")
|
117
117
|
end
|
118
118
|
|
119
119
|
it 'should not set any scopes if not requested' do
|
120
|
-
@options = {:
|
120
|
+
@options = {auth_server_url: 'https://login.cloudfoundry.com', token_server_url: 'https://uaa.cloudfoundry.com'}
|
121
121
|
subject.client
|
122
122
|
subject.options[:scope].should eq(nil)
|
123
123
|
end
|
@@ -211,4 +211,15 @@ describe OmniAuth::Strategies::Cloudfoundry do
|
|
211
211
|
subject.build_access_token('query-string').should be_empty
|
212
212
|
end
|
213
213
|
end
|
214
|
+
|
215
|
+
describe '#expired?' do
|
216
|
+
it 'sets params correctly on TokenCoder#decode' do
|
217
|
+
subject.access_token = OmniAuth::Strategies::CFAccessToken.new
|
218
|
+
CF::UAA::TokenCoder.should_receive(:decode)
|
219
|
+
.with(subject.access_token.auth_header.split()[1], verify: false, symbolize_keys: true)
|
220
|
+
.and_return({expires_at: 12345})
|
221
|
+
|
222
|
+
subject.expired?(subject.access_token)
|
223
|
+
end
|
224
|
+
end
|
214
225
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-uaa-oauth2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel D'sa
|
@@ -90,7 +90,6 @@ files:
|
|
90
90
|
- ".gitignore"
|
91
91
|
- ".travis.yml"
|
92
92
|
- Gemfile
|
93
|
-
- Gemfile.lock
|
94
93
|
- LICENSE
|
95
94
|
- NOTICE
|
96
95
|
- README.md
|
data/Gemfile.lock
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
omniauth-uaa-oauth2 (0.0.7)
|
5
|
-
cf-uaa-lib (>= 3.2, < 4.0)
|
6
|
-
omniauth (~> 1.0)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: http://rubygems.org/
|
10
|
-
specs:
|
11
|
-
cf-uaa-lib (3.2.4)
|
12
|
-
multi_json
|
13
|
-
diff-lcs (1.1.3)
|
14
|
-
hashie (3.5.7)
|
15
|
-
multi_json (1.11.2)
|
16
|
-
omniauth (1.4.2)
|
17
|
-
hashie (>= 1.2, < 4)
|
18
|
-
rack (>= 1.0, < 3)
|
19
|
-
rack (1.4.1)
|
20
|
-
rack-protection (1.2.0)
|
21
|
-
rack
|
22
|
-
rake (0.9.2.2)
|
23
|
-
rspec (2.6.0)
|
24
|
-
rspec-core (~> 2.6.0)
|
25
|
-
rspec-expectations (~> 2.6.0)
|
26
|
-
rspec-mocks (~> 2.6.0)
|
27
|
-
rspec-core (2.6.4)
|
28
|
-
rspec-expectations (2.6.0)
|
29
|
-
diff-lcs (~> 1.1.2)
|
30
|
-
rspec-mocks (2.6.0)
|
31
|
-
sinatra (1.3.3)
|
32
|
-
rack (~> 1.3, >= 1.3.6)
|
33
|
-
rack-protection (~> 1.2)
|
34
|
-
tilt (~> 1.3, >= 1.3.3)
|
35
|
-
tilt (1.3.3)
|
36
|
-
|
37
|
-
PLATFORMS
|
38
|
-
ruby
|
39
|
-
|
40
|
-
DEPENDENCIES
|
41
|
-
cf-uaa-lib (~> 3.2.4)
|
42
|
-
omniauth-uaa-oauth2!
|
43
|
-
rake
|
44
|
-
rspec (~> 2.6.0)
|
45
|
-
sinatra
|
46
|
-
|
47
|
-
BUNDLED WITH
|
48
|
-
1.16.2
|