omniauth-idcard 0.2.1 → 0.2.2
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 +7 -0
- data/lib/omniauth/strategies/idcard.rb +15 -15
- data/lib/omniauth-idcard/version.rb +1 -1
- metadata +13 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 52600f1c4f90252288de881e7b53d84d3918fa4c
|
4
|
+
data.tar.gz: ece489ed80f51b8eafa2718aa8e4515b05fc3f9b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 003891903e75a17b65788acfb2ab2af3e6f8aa7335f26ef68a2c44a4076309faa6d6c6b00ac7201d39bb7d1230aff867a1295ad386a59e5dd8d4f2850de492ba
|
7
|
+
data.tar.gz: 578828b451fc4b26cfbd46dc50966ba37b50f5acbeca11c8d62bcd9d32b9fa384107947865be883f40fb905825ff73a609bb349477e01ca6ec2019df79d991c3
|
@@ -4,12 +4,12 @@ require 'openssl'
|
|
4
4
|
module OmniAuth
|
5
5
|
module Strategies
|
6
6
|
class Idcard < OmniAuth::Strategies::OAuth
|
7
|
-
|
7
|
+
|
8
8
|
option :name, 'idcard'
|
9
9
|
option :logger, nil
|
10
|
-
|
10
|
+
|
11
11
|
uid { @user_data['serialNumber'] }
|
12
|
-
|
12
|
+
|
13
13
|
info do
|
14
14
|
{
|
15
15
|
'uid' => uid,
|
@@ -21,26 +21,26 @@ module OmniAuth
|
|
21
21
|
}
|
22
22
|
}
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
def request_phase
|
26
|
-
if @env['SSL_CLIENT_CERT']
|
26
|
+
if @env['SSL_CLIENT_CERT'] != ''
|
27
27
|
debug "Start authentication with ID-Card. Got certificate:"
|
28
28
|
debug @env['SSL_CLIENT_CERT']
|
29
|
-
|
29
|
+
|
30
30
|
@user_data = parse_client_certificate(@env['SSL_CLIENT_CERT'])
|
31
31
|
@env['REQUEST_METHOD'] = 'GET'
|
32
32
|
@env['omniauth.auth'] = info
|
33
33
|
@env['PATH_INFO'] = "#{OmniAuth.config.path_prefix}/#{name}/callback"
|
34
|
-
|
34
|
+
|
35
35
|
debug "ID-Card request was authenticated successfully. User data: #{info.inspect}"
|
36
|
-
|
36
|
+
|
37
37
|
call_app!
|
38
38
|
else
|
39
39
|
debug "Could not authenticate with ID-Card. Certificate is missing."
|
40
40
|
fail!(:client_certificate_missing)
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
def unescape(value)
|
45
45
|
value.gsub( /\\(?:([nevfbart\\])|0?x([0-9a-fA-F]{2})|u([0-9a-fA-F]{4}))/ ) {
|
46
46
|
if $3
|
@@ -55,16 +55,16 @@ module OmniAuth
|
|
55
55
|
|
56
56
|
def parse_client_certificate(data)
|
57
57
|
cert = OpenSSL::X509::Certificate.new(data)
|
58
|
-
|
59
|
-
# from 2011-07-01 Common Name is encoded in UTF-8
|
58
|
+
|
59
|
+
# from 2011-07-01 Common Name is encoded in UTF-8
|
60
60
|
subject_dn = if cert.not_before.to_date >= Date.parse('2011-07-01')
|
61
61
|
unescape(cert.subject.to_s).force_encoding('UTF-8')
|
62
62
|
else
|
63
63
|
unescape(cert.subject.to_s).unpack("C*").pack("U*").scan(/./mu) {|s| s[0].chr }.gsub("\u0000", '')
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
debug "Subject DN: #{subject_dn}"
|
67
|
-
|
67
|
+
|
68
68
|
subject_dn.split('/').inject(Hash.new) do |memo, part|
|
69
69
|
item = part.split('=')
|
70
70
|
memo[item.first.to_s] = item.last if item.last
|
@@ -76,8 +76,8 @@ module OmniAuth
|
|
76
76
|
fail!(:invalid_credentials)
|
77
77
|
end
|
78
78
|
|
79
|
-
private
|
80
|
-
|
79
|
+
private
|
80
|
+
|
81
81
|
def debug(message)
|
82
82
|
options[:logger].debug("#{Time.now} #{message}") if options[:logger]
|
83
83
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-idcard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tarmo Talu
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-17 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: omniauth-oauth
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,49 +41,43 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: webmock
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: simplecov
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rack-test
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
description: OmniAuth strategy for Estonian ID-Card
|
@@ -111,27 +100,26 @@ files:
|
|
111
100
|
- spec/spec_helper.rb
|
112
101
|
homepage: http://github.com/tarmotalu/omniauth-idcard
|
113
102
|
licenses: []
|
103
|
+
metadata: {}
|
114
104
|
post_install_message:
|
115
105
|
rdoc_options: []
|
116
106
|
require_paths:
|
117
107
|
- lib
|
118
108
|
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
109
|
requirements:
|
121
|
-
- -
|
110
|
+
- - '>='
|
122
111
|
- !ruby/object:Gem::Version
|
123
112
|
version: '0'
|
124
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
114
|
requirements:
|
127
|
-
- -
|
115
|
+
- - '>='
|
128
116
|
- !ruby/object:Gem::Version
|
129
117
|
version: '0'
|
130
118
|
requirements: []
|
131
119
|
rubyforge_project: omniauth-idcard
|
132
|
-
rubygems_version: 1.
|
120
|
+
rubygems_version: 2.1.10
|
133
121
|
signing_key:
|
134
|
-
specification_version:
|
122
|
+
specification_version: 4
|
135
123
|
summary: OmniAuth strategy for Estonian ID-Card
|
136
124
|
test_files:
|
137
125
|
- spec/omniauth/strategies/idcard_spec.rb
|