omniauth-islykill 0.9.8 → 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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/omniauth-islykill/version.rb +1 -1
- data/lib/omniauth/strategies/islykill.rb +29 -38
- data/lib/signed_xml/digest_method_resolution.rb +1 -0
- data/lib/signed_xml/document.rb +2 -2
- data/lib/signed_xml/signature.rb +1 -1
- metadata +32 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d587f84b5b19548cb5757f12fc01c4ae0ad2f80
|
4
|
+
data.tar.gz: a89db600e9632875c20348e7d68bf756e6c63a3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 369ee13fc7c14a4ec5e977636e0adaa65ea4e1660befaa2aac474e77e306fb18b3d67bb02ff027f906bfdc61288737d717e7cbdb74dd58695e482f5125fbbbea
|
7
|
+
data.tar.gz: e30326325f52c6061c38a4d15a4408602cf24f6c0a7b951431a8743064fbeb1b9956b79e04c1cb33ae3cb282ab4bfe08b18e94515b9e20de7ab26d2f23ae244f
|
data/README.md
CHANGED
@@ -74,7 +74,7 @@ The service provider metadata used to ease configuration of the SAML SP in the I
|
|
74
74
|
If not specified, the IdP is free to choose the name identifier format used
|
75
75
|
in the response. Optional.
|
76
76
|
|
77
|
-
* See the `
|
77
|
+
* See the `OneLogin::Saml::Settings` class in the [Ruby SAML gem](https://github.com/onelogin/ruby-saml) for additional supported options.
|
78
78
|
|
79
79
|
## Authors
|
80
80
|
|
@@ -4,7 +4,7 @@ require 'ruby-saml'
|
|
4
4
|
module OmniAuth
|
5
5
|
module Strategies
|
6
6
|
class Islykill
|
7
|
-
include OmniAuth::Strategy
|
7
|
+
include OmniAuth::Strategy
|
8
8
|
|
9
9
|
option :name_identifier_format, nil
|
10
10
|
option :idp_sso_target_url_runtime_params, {}
|
@@ -18,12 +18,35 @@ module OmniAuth
|
|
18
18
|
additional_params[mapped_param_key] = request.params[request_param_key.to_s] if request.params.has_key?(request_param_key.to_s)
|
19
19
|
end if runtime_request_parameters
|
20
20
|
|
21
|
-
authn_request =
|
22
|
-
settings =
|
21
|
+
authn_request = OneLogin::RubySaml::Authrequest.new
|
22
|
+
settings = OneLogin::RubySaml::Settings.new(options)
|
23
23
|
|
24
24
|
redirect(authn_request.create(settings, additional_params))
|
25
25
|
end
|
26
26
|
|
27
|
+
def read_attributes token_base64
|
28
|
+
islykill_xml_saml_response = Base64.decode64(token_base64)
|
29
|
+
signedDocument = SignedXml::Document(islykill_xml_saml_response)
|
30
|
+
if !signedDocument.is_verified?
|
31
|
+
raise OmniAuth::Strategies::Islykill::ValidationError.new("Islykill response not valid")
|
32
|
+
end
|
33
|
+
|
34
|
+
# response is valid so we extract the information using xpath
|
35
|
+
xml_doc = REXML::Document.new(islykill_xml_saml_response)
|
36
|
+
prefix='Response/Assertion/AttributeStatement/Attribute[@Name="'
|
37
|
+
postfix='"]/AttributeValue'
|
38
|
+
|
39
|
+
@attributes={
|
40
|
+
name: REXML::XPath.first(xml_doc,"#{prefix}Name#{postfix}").text,
|
41
|
+
kennitala: REXML::XPath.first(xml_doc,"#{prefix}UserSSN#{postfix}").text,
|
42
|
+
provider: REXML::XPath.first(xml_doc,"#{prefix}Authentication#{postfix}").text
|
43
|
+
}
|
44
|
+
|
45
|
+
@name_id = REXML::XPath.first(xml_doc,"Response/Assertion/Subject/NameID/@NameQualifier").value()
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
|
27
50
|
def callback_phase
|
28
51
|
puts " ___ _ _ _ _ "
|
29
52
|
puts " / __ __ _| | | |__ __ _ ___| | __"
|
@@ -36,51 +59,19 @@ module OmniAuth
|
|
36
59
|
raise OmniAuth::Strategies::Islykill::ValidationError.new("Islykill response missing")
|
37
60
|
end
|
38
61
|
|
39
|
-
|
40
|
-
islykill_xml_saml_response = Base64.decode64(token_base64)
|
41
|
-
signedDocument = SignedXml::Document(islykill_xml_saml_response)
|
42
|
-
if !signedDocument.is_verified?
|
43
|
-
raise OmniAuth::Strategies::Islykill::ValidationError.new("Islykill response not valid")
|
44
|
-
end
|
45
|
-
|
46
|
-
# response is valid so we extract the information using xpath
|
47
|
-
xml_doc = REXML::Document.new(islykill_xml_saml_response)
|
48
|
-
prefix='Response/Assertion/AttributeStatement/Attribute[@Name="'
|
49
|
-
postfix='"]/AttributeValue'
|
62
|
+
read_attributes request.params['token']
|
50
63
|
|
51
|
-
|
52
|
-
name: REXML::XPath.first(xml_doc,"#{prefix}Name#{postfix}").text,
|
53
|
-
kennitala: REXML::XPath.first(xml_doc,"#{prefix}UserSSN#{postfix}").text,
|
54
|
-
provider: REXML::XPath.first(xml_doc,"#{prefix}Authentication#{postfix}").text
|
55
|
-
}
|
56
|
-
|
57
|
-
@name_id = REXML::XPath.first(xml_doc,"Response/Assertion/Subject/NameID/@NameQualifier").value()
|
58
|
-
|
59
|
-
if @name_id.nil? || @name_id.empty?
|
64
|
+
if @name_id.nil? || @name_id.empty?
|
60
65
|
raise OmniAuth::Strategies::Islykill::ValidationError.new("SAML response missing 'name_id'")
|
61
66
|
end
|
62
67
|
|
63
68
|
super
|
64
69
|
rescue
|
65
70
|
fail!(:invalid_ticket, $!)
|
66
|
-
rescue
|
71
|
+
rescue OneLogin::RubySaml::ValidationError
|
67
72
|
fail!(:invalid_ticket, $!)
|
68
73
|
end
|
69
74
|
|
70
|
-
# def other_phase
|
71
|
-
# if on_path?("#{request_path}/metadata")
|
72
|
-
# # omniauth does not set the strategy on the other_phase
|
73
|
-
# @env['omniauth.strategy'] ||= self
|
74
|
-
# setup_phase
|
75
|
-
|
76
|
-
# response = Onelogin::Saml::Metadata.new
|
77
|
-
# settings = Onelogin::Saml::Settings.new(options)
|
78
|
-
# Rack::Response.new(response.generate(settings), 200, { "Content-Type" => "application/xml" }).finish
|
79
|
-
# else
|
80
|
-
# call_app!
|
81
|
-
# end
|
82
|
-
# end
|
83
|
-
|
84
75
|
uid {
|
85
76
|
#@name_id
|
86
77
|
@attributes[:kennitala]
|
data/lib/signed_xml/document.rb
CHANGED
@@ -12,7 +12,7 @@ module SignedXml
|
|
12
12
|
@doc = thing
|
13
13
|
else
|
14
14
|
@doc = Nokogiri::XML(thing)
|
15
|
-
end
|
15
|
+
end
|
16
16
|
end
|
17
17
|
|
18
18
|
def is_verifiable?
|
@@ -20,7 +20,7 @@ module SignedXml
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def is_verified?(arg = nil)
|
23
|
-
unless is_verifiable?
|
23
|
+
unless is_verifiable?
|
24
24
|
logger.warn "document cannot be verified because it contains no <Signature> elements"
|
25
25
|
return false
|
26
26
|
end
|
data/lib/signed_xml/signature.rb
CHANGED
@@ -28,9 +28,9 @@ module SignedXml
|
|
28
28
|
|
29
29
|
def is_signed_info_verified?
|
30
30
|
return false if public_key.nil?
|
31
|
-
|
32
31
|
result = public_key.verify(new_digester_for_id(signed_info.signature_method), decoded_value, signed_info.apply_transforms)
|
33
32
|
logger.info "verification of signature value [#{value}] failed" unless result
|
33
|
+
puts result
|
34
34
|
result
|
35
35
|
end
|
36
36
|
|
metadata
CHANGED
@@ -1,71 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-islykill
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bjorgvin Thordarson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: ruby-saml
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
33
|
+
version: '1.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0
|
40
|
+
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: nokogiri
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.6'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.6'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: options
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '2.3'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '2.3'
|
69
69
|
description: This is a specific SAML strategy that handles authentication to Icelands
|
70
70
|
Íslykill for OmniAuth.
|
71
71
|
email: algrim.is@outlook.com
|
@@ -73,26 +73,26 @@ executables: []
|
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
-
- README.md
|
77
76
|
- CHANGELOG.md
|
77
|
+
- README.md
|
78
|
+
- lib/omniauth-islykill.rb
|
79
|
+
- lib/omniauth-islykill/version.rb
|
80
|
+
- lib/omniauth/strategies/islykill.rb
|
81
|
+
- lib/omniauth/strategies/islykill/validation_error.rb
|
78
82
|
- lib/signed_xml.rb
|
83
|
+
- lib/signed_xml/base64_transform.rb
|
79
84
|
- lib/signed_xml/c14n_transform.rb
|
80
|
-
- lib/signed_xml/
|
85
|
+
- lib/signed_xml/digest_method_resolution.rb
|
81
86
|
- lib/signed_xml/digest_transform.rb
|
82
87
|
- lib/signed_xml/document.rb
|
83
88
|
- lib/signed_xml/enveloped_signature_transform.rb
|
84
|
-
- lib/signed_xml/reference.rb
|
85
|
-
- lib/signed_xml/base64_transform.rb
|
86
|
-
- lib/signed_xml/version.rb
|
87
|
-
- lib/signed_xml/digest_method_resolution.rb
|
88
|
-
- lib/signed_xml/logging.rb
|
89
89
|
- lib/signed_xml/fingerprinting.rb
|
90
|
-
- lib/signed_xml/
|
90
|
+
- lib/signed_xml/logging.rb
|
91
|
+
- lib/signed_xml/reference.rb
|
91
92
|
- lib/signed_xml/signature.rb
|
92
|
-
- lib/
|
93
|
-
- lib/
|
94
|
-
- lib/
|
95
|
-
- lib/omniauth/strategies/islykill.rb
|
93
|
+
- lib/signed_xml/signed_info.rb
|
94
|
+
- lib/signed_xml/transformable.rb
|
95
|
+
- lib/signed_xml/version.rb
|
96
96
|
homepage: https://github.com/Algrim/omniauth-islykill
|
97
97
|
licenses:
|
98
98
|
- ''
|
@@ -103,19 +103,18 @@ require_paths:
|
|
103
103
|
- lib
|
104
104
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
|
-
- -
|
106
|
+
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: '0'
|
109
109
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
110
|
requirements:
|
111
|
-
- -
|
111
|
+
- - ">="
|
112
112
|
- !ruby/object:Gem::Version
|
113
113
|
version: '0'
|
114
114
|
requirements: []
|
115
115
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.
|
116
|
+
rubygems_version: 2.4.5
|
117
117
|
signing_key:
|
118
118
|
specification_version: 4
|
119
|
-
summary:
|
120
|
-
Íslykill for OmniAuth.
|
119
|
+
summary: SAML strategy to handle Icelands Íslykill for OmniAuth.
|
121
120
|
test_files: []
|