omniauth-kerberos 0.2.0 → 0.4.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 +7 -0
- data/.github/workflows/maintenance-cache-wipe.yml +13 -0
- data/.github/workflows/maintenance-workflow-cleanup.yml +17 -0
- data/.github/workflows/test.yml +43 -0
- data/Gemfile +7 -0
- data/README.md +6 -6
- data/Rakefile +5 -1
- data/lib/omniauth/strategies/kerberos.rb +4 -4
- data/lib/omniauth-kerberos.rb +1 -1
- data/omniauth-kerberos.gemspec +11 -12
- data/spec/omniauth/strategies/kerberos_spec.rb +46 -0
- data/spec/spec_helper.rb +32 -0
- metadata +28 -20
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d1626ca445ca5eca6e00c9d75d223fb0339ba72e9bac2c4824e0a3a979255035
|
4
|
+
data.tar.gz: 7708abcde3c2001e57d7d6ae9e3ce06e9be3348ed8bedb789f65040e3d5d342a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a07e12c058c68232e6954059c490331eb28f7be3bcd965b7a76c37fa35fceffa53b6977c16dbf630d73b45adc63bd2283196d58a37909edd1c62f9fa38cb02f2
|
7
|
+
data.tar.gz: 0b5d4c28355481ae0a8687a0a6ce152c2b673829a064758c172a4c9685dea6c0e1d69a6a3fd7afadf86bd7e1f1c0f7ecdc81e7a739d42435f9b99190869e196e
|
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
name: maintenance-workflow-cleanup
|
3
|
+
on:
|
4
|
+
schedule:
|
5
|
+
- cron: "0 0 1 * *"
|
6
|
+
workflow_dispatch:
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
delete-workflow-runs:
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
steps:
|
12
|
+
- uses: Mattraks/delete-workflow-runs@v2
|
13
|
+
with:
|
14
|
+
token: ${{ github.token }}
|
15
|
+
repository: ${{ github.repository }}
|
16
|
+
retain_days: 180
|
17
|
+
keep_minimum_runs: 50
|
@@ -0,0 +1,43 @@
|
|
1
|
+
---
|
2
|
+
name: test
|
3
|
+
on: push
|
4
|
+
jobs:
|
5
|
+
rspec:
|
6
|
+
name: "ruby-${{ matrix.ruby }}"
|
7
|
+
runs-on: ubuntu-22.04
|
8
|
+
|
9
|
+
strategy:
|
10
|
+
fail-fast: false
|
11
|
+
matrix:
|
12
|
+
ruby:
|
13
|
+
- "3.3"
|
14
|
+
- "3.2"
|
15
|
+
- "3.1"
|
16
|
+
- "3.0"
|
17
|
+
- "2.7"
|
18
|
+
|
19
|
+
env:
|
20
|
+
BUNDLE_WITHOUT: development
|
21
|
+
|
22
|
+
steps:
|
23
|
+
- uses: actions/checkout@master
|
24
|
+
|
25
|
+
- run: |
|
26
|
+
sudo apt-get update --quiet
|
27
|
+
sudo apt-get install --quiet --yes libkrb5-dev
|
28
|
+
|
29
|
+
- uses: ruby/setup-ruby@v1
|
30
|
+
with:
|
31
|
+
ruby-version: ${{ matrix.ruby }}
|
32
|
+
bundler-cache: true
|
33
|
+
env:
|
34
|
+
BUNDLE_JOBS: 4
|
35
|
+
BUNDLE_RETRY: 3
|
36
|
+
|
37
|
+
- run: |
|
38
|
+
bundle exec rspec --color --format documentation
|
39
|
+
|
40
|
+
- uses: codecov/codecov-action@v4
|
41
|
+
with:
|
42
|
+
fail_ci_if_error: true
|
43
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# Omniauth::Strategies::Kerberos
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
[](https://travis-ci.org/jgraichen/omniauth-kerberos)
|
4
|
+
[](https://codeclimate.com/github/jgraichen/omniauth-kerberos)
|
5
|
+
[](https://codeclimate.com/github/jgraichen/omniauth-kerberos/coverage)
|
6
|
+
|
7
|
+
**omniauth-kerberos** is a simple [OmniAuth](https://github.com/intridea/omniauth) strategy to authenticate using a Kerberos server. **omniauth-kerberos** can be used as an authenticator for [OmniAuth MultiPassword](https://github.com/jgraichen/omniauth-multipassword).
|
6
8
|
|
7
9
|
|
8
10
|
## Installation
|
@@ -36,9 +38,7 @@ Rails.application.config.middleware.use OmniAuth::Builder do
|
|
36
38
|
end
|
37
39
|
```
|
38
40
|
|
39
|
-
You still need to configure your system for Kerberos usage like
|
40
|
-
specifying realms. If you has your own login form you can specify
|
41
|
-
the fields to use:
|
41
|
+
You still need to configure your system for Kerberos usage like specifying realms. If you has your own login form you can specify the fields to use:
|
42
42
|
|
43
43
|
```ruby
|
44
44
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require 'omniauth'
|
2
|
+
require 'krb5_auth'
|
3
|
+
require 'omniauth/multipassword/base'
|
4
4
|
|
5
5
|
module OmniAuth
|
6
6
|
module Strategies
|
@@ -15,7 +15,7 @@ module OmniAuth
|
|
15
15
|
|
16
16
|
info do
|
17
17
|
{ username: username,
|
18
|
-
email: username +
|
18
|
+
email: username + '@' + @krb5.get_default_realm.downcase }
|
19
19
|
end
|
20
20
|
|
21
21
|
def authenticate(username, password)
|
data/lib/omniauth-kerberos.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require
|
1
|
+
require 'omniauth/strategies/kerberos'
|
data/omniauth-kerberos.gemspec
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
|
-
gem.
|
5
|
-
gem.
|
6
|
-
gem.
|
7
|
-
gem.
|
8
|
-
gem.
|
4
|
+
gem.version = '0.4.0'
|
5
|
+
gem.name = 'omniauth-kerberos'
|
6
|
+
gem.authors = ['Jan Graichen']
|
7
|
+
gem.email = ['jan.graichen@altimos.de']
|
8
|
+
gem.description = 'An OmniAuth strategy for Kerberos.'
|
9
|
+
gem.summary = 'An OmniAuth strategy for Kerberos.'
|
10
|
+
gem.homepage = 'https://github.com/jgraichen/omniauth-kerberos'
|
9
11
|
|
10
|
-
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
12
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
11
13
|
gem.files = `git ls-files`.split("\n")
|
12
|
-
gem.
|
13
|
-
gem.name = "omniauth-kerberos"
|
14
|
-
gem.require_paths = ["lib"]
|
15
|
-
gem.version = "0.2.0"
|
14
|
+
gem.require_paths = ['lib']
|
16
15
|
|
17
|
-
gem.add_dependency
|
18
|
-
gem.add_dependency
|
16
|
+
gem.add_dependency 'timfel-krb5-auth', '~> 0.8'
|
17
|
+
gem.add_dependency 'omniauth-multipassword', '~> 2.0'
|
19
18
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rack/test'
|
3
|
+
|
4
|
+
describe OmniAuth::Strategies::Kerberos do
|
5
|
+
include Rack::Test::Methods
|
6
|
+
|
7
|
+
before do
|
8
|
+
fake = double 'krb5'
|
9
|
+
allow(::Krb5Auth::Krb5).to receive(:new).and_return fake
|
10
|
+
|
11
|
+
allow(fake).to receive(:get_default_realm).and_return 'example.org'
|
12
|
+
|
13
|
+
allow(fake).to receive(:get_init_creds_password) do |username, password|
|
14
|
+
if username == 'john' && password == 'secret'
|
15
|
+
true
|
16
|
+
else
|
17
|
+
fail ::Krb5Auth::Krb5::Exception
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
let(:app) do
|
23
|
+
Rack::Builder.new do
|
24
|
+
use OmniAuth::Test::PhonySession
|
25
|
+
use OmniAuth::Strategies::Kerberos
|
26
|
+
run ->(env) { [404, {}, [env['omniauth.auth']['uid'].to_s]] }
|
27
|
+
end.to_app
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'shows login FORM' do
|
31
|
+
get '/auth/kerberos'
|
32
|
+
expect(last_response.body).to include '<form'
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'redirect on wrong password' do
|
36
|
+
post '/auth/kerberos/callback', username: 'paul', password: 'wrong'
|
37
|
+
expect(last_response).to be_redirect
|
38
|
+
expect(last_response.headers['Location']).to eq \
|
39
|
+
'/auth/failure?message=invalid_credentials&strategy=kerberos'
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'authenticates with password' do
|
43
|
+
post '/auth/kerberos/callback', username: 'john', password: 'secret'
|
44
|
+
expect(last_response.body).to eq 'john'
|
45
|
+
end
|
46
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
|
3
|
+
require 'simplecov'
|
4
|
+
require 'simplecov-cobertura'
|
5
|
+
|
6
|
+
SimpleCov.start do
|
7
|
+
add_filter 'spec'
|
8
|
+
end
|
9
|
+
|
10
|
+
SimpleCov.formatters = [
|
11
|
+
SimpleCov::Formatter::HTMLFormatter,
|
12
|
+
SimpleCov::Formatter::CoberturaFormatter,
|
13
|
+
]
|
14
|
+
|
15
|
+
require 'omniauth-kerberos'
|
16
|
+
|
17
|
+
Dir[File.expand_path('spec/support/**/*.rb')].each { |f| require f }
|
18
|
+
|
19
|
+
# Disable omniauth logger
|
20
|
+
class NullLogger < Logger
|
21
|
+
def initialize(*_args)
|
22
|
+
end
|
23
|
+
|
24
|
+
def add(*_args, &_block)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
OmniAuth.config.logger = NullLogger.new
|
29
|
+
|
30
|
+
RSpec.configure do |config|
|
31
|
+
config.order = 'random'
|
32
|
+
end
|
metadata
CHANGED
@@ -1,38 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-kerberos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jan Graichen
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2024-07-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: timfel-krb5-auth
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0.8'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.8'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: omniauth-multipassword
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
|
-
version: '0'
|
33
|
+
version: '2.0'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
36
41
|
description: An OmniAuth strategy for Kerberos.
|
37
42
|
email:
|
38
43
|
- jan.graichen@altimos.de
|
@@ -40,7 +45,10 @@ executables: []
|
|
40
45
|
extensions: []
|
41
46
|
extra_rdoc_files: []
|
42
47
|
files:
|
43
|
-
- .
|
48
|
+
- ".github/workflows/maintenance-cache-wipe.yml"
|
49
|
+
- ".github/workflows/maintenance-workflow-cleanup.yml"
|
50
|
+
- ".github/workflows/test.yml"
|
51
|
+
- ".gitignore"
|
44
52
|
- Gemfile
|
45
53
|
- LICENSE
|
46
54
|
- README.md
|
@@ -48,28 +56,28 @@ files:
|
|
48
56
|
- lib/omniauth-kerberos.rb
|
49
57
|
- lib/omniauth/strategies/kerberos.rb
|
50
58
|
- omniauth-kerberos.gemspec
|
59
|
+
- spec/omniauth/strategies/kerberos_spec.rb
|
60
|
+
- spec/spec_helper.rb
|
51
61
|
homepage: https://github.com/jgraichen/omniauth-kerberos
|
52
62
|
licenses: []
|
63
|
+
metadata: {}
|
53
64
|
post_install_message:
|
54
65
|
rdoc_options: []
|
55
66
|
require_paths:
|
56
67
|
- lib
|
57
68
|
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
69
|
requirements:
|
60
|
-
- -
|
70
|
+
- - ">="
|
61
71
|
- !ruby/object:Gem::Version
|
62
72
|
version: '0'
|
63
73
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
-
none: false
|
65
74
|
requirements:
|
66
|
-
- -
|
75
|
+
- - ">="
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '0'
|
69
78
|
requirements: []
|
70
|
-
|
71
|
-
rubygems_version: 1.8.15
|
79
|
+
rubygems_version: 3.5.11
|
72
80
|
signing_key:
|
73
|
-
specification_version:
|
81
|
+
specification_version: 4
|
74
82
|
summary: An OmniAuth strategy for Kerberos.
|
75
83
|
test_files: []
|