omniauth-seb-elink 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3efafa13a897a9b344b1d6032da283ea33e9bce5
4
+ data.tar.gz: 37aa6f644100676823f02d7e59753a6a1bc4290d
5
+ SHA512:
6
+ metadata.gz: 5f80b64234ab5cfeab0be8075622b3113b01850053318d0dbfa78c7cc3352128df4dec80b6928ef05f418951d369e3937109ad73e511253cf20bbd85f2d4f39b
7
+ data.tar.gz: cdd90b142b2d0787aa5e6218814af2c00794e620f951a3369233efdfc2482e966b179e5ed8b161f66eedd0d15aa8d4817d0c9928861112a643f3b5cebcb9f4c3
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .ruby-gemset
19
+ .ruby-version
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3
4
+ - 2.4
5
+ - 2.5
6
+ - 2.6
7
+ script: bundle exec rspec
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in omniauth-nordea.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2017 MAK IT
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # Omniauth SEB e-link
2
+
3
+ Omniauth strategy for using SEB e-link as an authentication service provider.
4
+
5
+ [![Build Status](https://travis-ci.org/mak-it/omniauth-seb-elink.svg?branch=master)](https://travis-ci.org/mak-it/omniauth-seb-elink)
6
+
7
+ Supported Ruby versions: 2.2+
8
+
9
+ ## Related projects
10
+ - [omniauth-citadele](https://github.com/mak-it/omniauth-citadele) - strategy for authenticating with Citadele
11
+ - [omniauth-dnb](https://github.com/mak-it/omniauth-dnb) - strategy for authenticating with DNB
12
+ - [omniauth-nordea](https://github.com/mak-it/omniauth-nordea) - strategy for authenticating with Nordea
13
+ - [omniauth-swedbank](https://github.com/mak-it/omniauth-swedbank) - strategy for authenticating with Swedbank
14
+
15
+ ## Installation
16
+
17
+ Add this line to your application's Gemfile:
18
+
19
+ gem 'omniauth-seb-elink'
20
+
21
+ And then execute:
22
+
23
+ $ bundle
24
+
25
+ Or install it yourself as:
26
+
27
+ $ gem install omniauth-seb-elink
28
+
29
+ ## Usage
30
+
31
+ Here's a quick example, adding the middleware to a Rails app
32
+ in `config/initializers/omniauth.rb`:
33
+
34
+ ```ruby
35
+ Rails.application.config.middleware.use OmniAuth::Builder do
36
+ provider :seb, ENV['SEB_PUBLIC_CRT'], ENV['SEB_SND_ID']
37
+ end
38
+ ```
39
+
40
+ ## Auth Hash
41
+
42
+ Here's an example Auth Hash available in `request.env['omniauth.auth']`:
43
+
44
+ ```ruby
45
+ {
46
+ provider: 'seb',
47
+ uid: '374042-80367',
48
+ info: {
49
+ full_name: 'ARNIS RAITUMS'
50
+ },
51
+ extra: {
52
+ raw_info: {
53
+ IB_SND_ID: 'SEBUB',
54
+ IB_SERVICE: '0001',
55
+ IB_REC_ID: 'TETS_SND_ID',
56
+ IB_USER: '374042-80367',
57
+ IB_DATE: '11.05.2017',
58
+ IB_TIME: '15:22:18',
59
+ IB_USER_INFO: 'ID=374042-80367;NAME=ARNIS RAITUMS',
60
+ IB_VERSION: '001',
61
+ IB_CRC: 'UYVDKsdkjsd...',
62
+ IB_LANG: 'LAT'
63
+ }
64
+ }
65
+ }
66
+ ```
67
+
68
+ ## Contributing
69
+
70
+ 1. Fork it
71
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
72
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
73
+ 4. Push to the branch (`git push origin my-new-feature`)
74
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,4 @@
1
+ require 'omniauth/seb'
2
+ require 'i18n'
3
+
4
+ I18n.load_path += Dir[File.join(File.dirname(__FILE__), 'omniauth', 'locales', '*.yml')]
@@ -0,0 +1,5 @@
1
+ en:
2
+ omniauth:
3
+ seb:
4
+ please_wait: Please wait...
5
+ click_here_if_not_redirected: Click here, if not redirected automatically
@@ -0,0 +1,5 @@
1
+ lv:
2
+ omniauth:
3
+ seb:
4
+ please_wait: Lūdzu uzgaidiet...
5
+ click_here_if_not_redirected: Spiediet šeit, ja pāradresācija nenotiek automātiski
@@ -0,0 +1,2 @@
1
+ require 'omniauth/seb/version'
2
+ require 'omniauth/strategies/seb'
@@ -0,0 +1,5 @@
1
+ module Omniauth
2
+ module Seb
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,85 @@
1
+ require 'omniauth'
2
+ require 'base64'
3
+ require_relative 'seb/message'
4
+ require_relative 'seb/response'
5
+
6
+ module OmniAuth
7
+ module Strategies
8
+ class Seb
9
+ class ValidationError < StandardError; end
10
+
11
+ AUTH_SERVICE = '0005'
12
+
13
+ include OmniAuth::Strategy
14
+
15
+ args [:public_crt, :snd_id]
16
+
17
+ option :public_crt, nil
18
+ option :snd_id, nil
19
+
20
+ option :name, 'seb'
21
+ option :site, 'https://ibanka.seb.lv/ipc/epakindex.jsp'
22
+
23
+ uid do
24
+ request.params['IB_USER']
25
+ end
26
+
27
+ info do
28
+ user_info = request.params['IB_USER_INFO']
29
+ full_name = user_info.match(/USER=(.+)/) ? user_info.match(/USER=(.+)/)[1] : user_info.match(/NAME=(.+)/)[1]
30
+ {
31
+ full_name: full_name
32
+ }
33
+ end
34
+
35
+ extra do
36
+ { raw_info: request.params }
37
+ end
38
+
39
+ def callback_phase
40
+ begin
41
+ pub_crt = OpenSSL::X509::Certificate.new(options.public_crt).public_key
42
+ rescue => e
43
+ return fail!(:public_crt_load_err, e)
44
+ end
45
+
46
+ if request.params['IB_SND_ID'] != 'SEBUB'
47
+ return fail!(:invalid_response_snd_id_err)
48
+ end
49
+
50
+ if request.params['IB_SERVICE'] != '0001'
51
+ return fail!(:invalid_response_service_err)
52
+ end
53
+
54
+ message = OmniAuth::Strategies::Seb::Response.new(request.params)
55
+ message.validate!(pub_crt)
56
+
57
+ super
58
+ rescue ValidationError => e
59
+ fail!(:invalid_response_crc, e)
60
+ end
61
+
62
+ def request_phase
63
+ fail!(:invalid_snd_id) if options.snd_id.nil?
64
+
65
+ message = OmniAuth::Strategies::Seb::Message.new(
66
+ 'IB_SND_ID': options.snd_id,
67
+ 'IB_SERVICE': AUTH_SERVICE,
68
+ 'IB_LANG': 'LAT'
69
+ )
70
+
71
+ # Build redirect form
72
+ form = OmniAuth::Form.new(title: I18n.t('omniauth.seb.please_wait'), url: options.site)
73
+
74
+ message.each_pair do |k,v|
75
+ form.html "<input type=\"hidden\" name=\"#{k}\" value=\"#{v}\" />"
76
+ end
77
+
78
+ form.button I18n.t('omniauth.seb.click_here_if_not_redirected')
79
+ form.instance_variable_set('@html',
80
+ form.to_html.gsub('</form>', '</form><script type="text/javascript">document.forms[0].submit();</script>'))
81
+ form.to_response
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,19 @@
1
+ module OmniAuth
2
+ module Strategies
3
+ class Seb
4
+ class Message
5
+ def initialize(hash)
6
+ @hash = hash
7
+ end
8
+
9
+ def to_hash
10
+ @hash
11
+ end
12
+
13
+ def each_pair(&block)
14
+ @hash.each_pair(&block)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,34 @@
1
+ module OmniAuth
2
+ module Strategies
3
+ class Seb
4
+ class Response < Message
5
+ SIGNED_KEYS = [
6
+ 'IB_SND_ID', # SEBUB
7
+ 'IB_SERVICE', # 0001
8
+ 'IB_REC_ID',
9
+ 'IB_USER',
10
+ 'IB_DATE',
11
+ 'IB_TIME',
12
+ 'IB_USER_INFO',
13
+ 'IB_VERSION'
14
+ ]
15
+
16
+ def prepend_length(value)
17
+ # prepend length to string in 0xx format
18
+ [ value.to_s.length.to_s.rjust(3, '0'), value.dup.to_s.force_encoding('ascii')].join
19
+ end
20
+
21
+ def validate!(pub_key)
22
+ raw_str = SIGNED_KEYS.map{|k| prepend_length(@hash[k])}.join
23
+ received_sig_str = Base64.decode64(@hash['IB_CRC'])
24
+
25
+ if !pub_key.verify(OpenSSL::Digest::SHA1.new, received_sig_str, raw_str)
26
+ raise ValidationError, 'Invalid signature'
27
+ end
28
+
29
+ self
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'omniauth/seb/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = 'omniauth-seb-elink'
8
+ gem.version = Omniauth::Seb::VERSION
9
+ gem.authors = ['MAK IT']
10
+ gem.email = ['admin@makit.lv']
11
+ gem.description = %q{OmniAuth strategy for SEB e-link}
12
+ gem.summary = %q{OmniAuth strategy for SEB e-link}
13
+ gem.homepage = 'https://github.com/mak-it/omniauth-seb-elink'
14
+ gem.license = 'MIT'
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ['lib']
20
+
21
+ gem.required_ruby_version = '>= 2.2.2'
22
+
23
+ gem.add_runtime_dependency 'omniauth', '~> 1.0'
24
+ gem.add_runtime_dependency 'i18n'
25
+
26
+ gem.add_development_dependency 'rack-test'
27
+ gem.add_development_dependency 'rspec'
28
+ gem.add_development_dependency 'bundler'
29
+ gem.add_development_dependency 'rake'
30
+ end
@@ -0,0 +1,22 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDtTCCAp2gAwIBAgIJAKPVTy65V/TCMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
3
+ BAYTAkxWMRMwEQYDVQQIEwpTb21lLVN0YXRlMQ0wCwYDVQQKEwRUZXN0MRIwEAYD
4
+ VQQDEwlUZXN0IFVzZXIwHhcNMTcwNTExMTMxMzQ4WhcNMjcwNTA5MTMxMzQ4WjBF
5
+ MQswCQYDVQQGEwJMVjETMBEGA1UECBMKU29tZS1TdGF0ZTENMAsGA1UEChMEVGVz
6
+ dDESMBAGA1UEAxMJVGVzdCBVc2VyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
7
+ CgKCAQEAyIjzmr79Chp/DTsracfBJVyaOqG2S41yZZQBYS12oOySZa1zMz76X9Lp
8
+ m4qAXiPgktRJcC2iOwz9D2u+LwxCh9Sk0o2GTitZMOqvISGTkdl5sl472xA1eGrJ
9
+ CnKYD3ftPNwuaV6olTPXiyz1isNy/AyMSRAIv9r8iI+mROSqfa1lPlKEY71l+ZPq
10
+ D5FBfNn79FttyPSwqtD2wzAjbg6nx0qkE3o5S96xhxm+EZSQIBES5fulinnNjZuS
11
+ ulq6AJpwWXAyQBG/At7wGmNBdPwBvGmlBXrhBngRMjafS1aKQZFiuzA7hY09G/hl
12
+ ALgS0Cu2ZBVPMYmcRWhMWPkcM6tsPQIDAQABo4GnMIGkMB0GA1UdDgQWBBQx+6Jm
13
+ JMabKYbSbt4WKTHCKAcxuTB1BgNVHSMEbjBsgBQx+6JmJMabKYbSbt4WKTHCKAcx
14
+ uaFJpEcwRTELMAkGA1UEBhMCTFYxEzARBgNVBAgTClNvbWUtU3RhdGUxDTALBgNV
15
+ BAoTBFRlc3QxEjAQBgNVBAMTCVRlc3QgVXNlcoIJAKPVTy65V/TCMAwGA1UdEwQF
16
+ MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKntpN8+zZOddie+RVpjNYY8K0MWQdIQ
17
+ 1Zadd7OndI0iIAnDJw9IAEQL1m6TTL7klRYgSHR2OX3KTcCsWKUUbSSoDhMyvJIN
18
+ wZEnXRLi6tttWJd1R1w2o37oXUfg+VhfZd+kB8Wq0FipeADUnWE4b0w2A6yDok4L
19
+ KEUNgvt3Mh86SKJrFk4NtOLkIEYIvjsruObqfkgLWwJuGIGDcpdga3kcwPF9cP8t
20
+ /Tdv/7NP785cY1IzzFZcDYg1FLAKP8mcoSCkBhB4BOojTw/XjLaNN8kw/7VE9kU3
21
+ Pjt5CV31UGp1Iq0fyImZKdYo01RrLPtX4+yh/TkW2x+J8p7Ki11wNLM=
22
+ -----END CERTIFICATE-----
@@ -0,0 +1,116 @@
1
+ require 'spec_helper'
2
+
3
+ describe OmniAuth::Strategies::Seb do
4
+ PUBLIC_CRT = File.read(File.join(RSpec.configuration.cert_folder, 'response.public.pem'))
5
+ SND_ID = 'AAA'
6
+
7
+ let(:app){ Rack::Builder.new do |b|
8
+ b.use Rack::Session::Cookie, {secret: 'abc123'}
9
+ b.use OmniAuth::Strategies::Seb, PUBLIC_CRT, SND_ID
10
+ b.run lambda{|env| [404, {}, ['Not Found']]}
11
+ end.to_app }
12
+
13
+ context 'request phase' do
14
+ before(:each) { get '/auth/seb' }
15
+
16
+ it 'displays a single form' do
17
+ expect(last_response.status).to eq(200)
18
+ expect(last_response.body.scan('<form').size).to eq(1)
19
+ end
20
+
21
+ it 'has JavaScript code to submit the form after it is created' do
22
+ expect(last_response.body).to be_include('</form><script type="text/javascript">document.forms[0].submit();</script>')
23
+ end
24
+
25
+ EXPECTED_VALUES = {
26
+ 'IB_SND_ID': SND_ID,
27
+ 'IB_SERVICE': OmniAuth::Strategies::Seb::AUTH_SERVICE,
28
+ 'IB_LANG': 'LAT'
29
+ }
30
+
31
+ EXPECTED_VALUES.each_pair do |k,v|
32
+ it "has hidden input field #{k} => #{v}" do
33
+ expect(last_response.body).to include(
34
+ "<input type=\"hidden\" name=\"#{k}\" value=\"#{v}\""
35
+ )
36
+ end
37
+ end
38
+ end
39
+
40
+ context 'callback phase' do
41
+ let(:auth_hash){ last_request.env['omniauth.auth'] }
42
+
43
+ context "with valid response" do
44
+ before do
45
+ post '/auth/seb/callback',
46
+ 'IB_SND_ID': 'SEBUB',
47
+ 'IB_SERVICE': '0001',
48
+ 'IB_REC_ID': 'AAA',
49
+ 'IB_USER': '050505-12123',
50
+ 'IB_DATE': '05.12.2003',
51
+ 'IB_TIME': '10:00:00',
52
+ 'IB_USER_INFO': 'ID=050505-12123;NAME=JOHN DOE',
53
+ 'IB_VERSION': '001',
54
+ 'IB_CRC': 'PBlZ54E1tWoPIsyHPQvDAepiEm6/cDoIrvqGDXbRzGz7wEhXHrZxM5DxeC7XkI2IzFycTws8LLyYZXP3AluAvGoCgj/WYlLjcReLk6v4W0z1+KLGqQKpiOh+CTPjWU+VCMB9jMzbJ+p4hXiC8qQge3Y3ovsNcZjvbJJ5WMhSyv7AhHA2qcMYfYpByu7pD67QqNOh3fanpRRrQNmM2ebnVhVFQZ4xlDvWMyK2Rhfl/VigeNo7cCsPcRGcelBSTj+JmQukhIgPMhLrGFs31qNfVA2khQpY2puGv1yUz9tFG+CgoLJyBSFYexSk0qcgr5CCpEBMVcaaa/sy1FHcXKA7mg==',
55
+ 'IB_LANG': 'LAT'
56
+ end
57
+
58
+ it 'sets the correct uid value in the auth hash' do
59
+ expect(auth_hash.uid).to eq('050505-12123')
60
+ end
61
+
62
+ it 'sets the correct info.full_name value in the auth hash' do
63
+ expect(auth_hash.info.full_name).to eq('JOHN DOE')
64
+ end
65
+ end
66
+
67
+ context 'with non-existant public key file' do
68
+ let(:app){ Rack::Builder.new do |b|
69
+ b.use Rack::Session::Cookie, {secret: 'abc123'}
70
+ b.use(OmniAuth::Strategies::Seb, 'missing-public-key-file.pem', SND_ID )
71
+ b.run lambda{|env| [404, {}, ['Not Found']]}
72
+ end.to_app }
73
+
74
+ it 'redirects to /auth/failure with appropriate query params' do
75
+ post '/auth/seb/callback' # Params are not important, because we're testing public key loading
76
+ expect(last_response.status).to eq(302)
77
+ expect(last_response.headers['Location']).to eq('/auth/failure?message=public_crt_load_err&strategy=seb')
78
+ end
79
+ end
80
+
81
+ context 'with non-existant SND ID' do
82
+ let(:app){ Rack::Builder.new do |b|
83
+ b.use Rack::Session::Cookie, {secret: 'abc123'}
84
+ b.use(OmniAuth::Strategies::Seb, PUBLIC_CRT, nil )
85
+ b.run lambda{|env| [404, {}, ['Not Found']]}
86
+ end.to_app }
87
+
88
+ it 'redirects to /auth/failure with appropriate query params' do
89
+ post '/auth/seb/callback' # Params are not important, because we're testing public key loading
90
+ expect(last_response.status).to eq(302)
91
+ expect(last_response.headers['Location']).to eq('/auth/failure?message=invalid_response_snd_id_err&strategy=seb')
92
+ end
93
+ end
94
+
95
+ context "with invalid MAC" do
96
+ before do
97
+ post '/auth/seb/callback',
98
+ 'IB_SND_ID': 'SEBUB',
99
+ 'IB_SERVICE': '0001',
100
+ 'IB_REC_ID': 'AAA',
101
+ 'IB_USER': '050505-12123',
102
+ 'IB_DATE': '05.12.2003',
103
+ 'IB_TIME': '10:00:00',
104
+ 'IB_USER_INFO': 'ID=050505-12123;NAME=JOHN DOE',
105
+ 'IB_VERSION': '001',
106
+ 'IB_CRC': 'invalid_crc',
107
+ 'IB_LANG': 'LAT'
108
+ end
109
+
110
+ it "fails with invalid_mac error" do
111
+ expect(auth_hash).to eq(nil)
112
+ expect(last_request.env['omniauth.error.type']).to eq(:invalid_response_crc)
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,17 @@
1
+ $:.unshift File.expand_path('..', __FILE__)
2
+ $:.unshift File.expand_path('../../lib', __FILE__)
3
+ require 'rspec'
4
+ require 'rack/test'
5
+ require 'omniauth'
6
+ require 'omniauth-seb-elink'
7
+
8
+ RSpec.configure do |config|
9
+ config.add_setting('cert_folder')
10
+ config.cert_folder = File.expand_path('../certs', __FILE__)
11
+
12
+ config.include Rack::Test::Methods
13
+ config.extend OmniAuth::Test::StrategyMacros, :type => :strategy
14
+ config.expect_with :rspec do |c|
15
+ c.syntax = :expect
16
+ end
17
+ end
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: omniauth-seb-elink
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - MAK IT
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-02-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: omniauth
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: i18n
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rack-test
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: OmniAuth strategy for SEB e-link
98
+ email:
99
+ - admin@makit.lv
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".travis.yml"
106
+ - Gemfile
107
+ - LICENSE.txt
108
+ - README.md
109
+ - Rakefile
110
+ - lib/omniauth-seb-elink.rb
111
+ - lib/omniauth/locales/omniauth.en.yml
112
+ - lib/omniauth/locales/omniauth.lv.yml
113
+ - lib/omniauth/seb.rb
114
+ - lib/omniauth/seb/version.rb
115
+ - lib/omniauth/strategies/seb.rb
116
+ - lib/omniauth/strategies/seb/message.rb
117
+ - lib/omniauth/strategies/seb/response.rb
118
+ - omniauth-seb-elink.gemspec
119
+ - spec/certs/response.public.pem
120
+ - spec/omniauth/strategies/seb_spec.rb
121
+ - spec/spec_helper.rb
122
+ homepage: https://github.com/mak-it/omniauth-seb-elink
123
+ licenses:
124
+ - MIT
125
+ metadata: {}
126
+ post_install_message:
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 2.2.2
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ requirements: []
141
+ rubyforge_project:
142
+ rubygems_version: 2.4.8
143
+ signing_key:
144
+ specification_version: 4
145
+ summary: OmniAuth strategy for SEB e-link
146
+ test_files:
147
+ - spec/certs/response.public.pem
148
+ - spec/omniauth/strategies/seb_spec.rb
149
+ - spec/spec_helper.rb