zas-service 0.0.1 → 0.0.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.
@@ -8,6 +8,8 @@ module Zas
|
|
8
8
|
# authenticator = FilteredAuthenticator.new(MyRealAuthenticator.new, [SomeFilter, SomeOtherFilter])
|
9
9
|
# authenticator.authenticate(credentials)
|
10
10
|
class FilteredAuthenticator
|
11
|
+
attr_accessor :logger
|
12
|
+
|
11
13
|
# Initialize the filtered authenticator with the given delegate
|
12
14
|
# and filters. Filters will be applied when the authentication
|
13
15
|
# occurs.
|
@@ -23,7 +25,9 @@ module Zas
|
|
23
25
|
#
|
24
26
|
# credentials - The credentials
|
25
27
|
def authenticate(credentials)
|
28
|
+
logger.info "Applying filters to credentials: #{filters.join(', ')}"
|
26
29
|
credentials = filters.reduce(credentials) { |credentials, filter| filter.authenticate(credentials) }
|
30
|
+
logger.info "Delegating to #{delegate.class.name}"
|
27
31
|
delegate.authenticate(*credentials)
|
28
32
|
end
|
29
33
|
|
@@ -29,6 +29,8 @@ module Zas
|
|
29
29
|
self[:salt_field] || :password_salt
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
attr_accessor :logger
|
32
34
|
|
33
35
|
# Initialize the autenticator with the given sequel DB. Optionally pass in additional
|
34
36
|
# configuration for the authenticator.
|
@@ -45,7 +47,9 @@ module Zas
|
|
45
47
|
|
46
48
|
# Authenticate the given username/password pair
|
47
49
|
def authenticate(username, password)
|
50
|
+
logger.info "Authenticating #{username} (table: #{table_name}, username_field: #{username_field})"
|
48
51
|
record = db[table_name].filter(username_field => username).first
|
52
|
+
logger.info "Record found for #{username}"
|
49
53
|
tokens = [password, record[salt_field]].compact
|
50
54
|
matches?(record[password_field], *tokens) if record
|
51
55
|
end
|
data/lib/zas/filters.rb
CHANGED
data/lib/zas/service.rb
CHANGED
@@ -12,6 +12,8 @@ module Zas
|
|
12
12
|
require 'zas/authenticators'
|
13
13
|
require 'zas/crypto_providers'
|
14
14
|
|
15
|
+
attr_accessor :logger
|
16
|
+
|
15
17
|
# A collection authenticators mapped to keys.
|
16
18
|
def authenticators
|
17
19
|
@authenticators ||= {}
|
@@ -37,7 +39,7 @@ module Zas
|
|
37
39
|
|
38
40
|
begin
|
39
41
|
while req = socket.recv
|
40
|
-
logger.
|
42
|
+
logger.info req
|
41
43
|
socket.send(encode(authenticate(req)))
|
42
44
|
end
|
43
45
|
rescue ZMQ::Error => e
|
@@ -50,7 +52,7 @@ module Zas
|
|
50
52
|
attr_accessor :host
|
51
53
|
attr_accessor :port
|
52
54
|
attr_accessor :context
|
53
|
-
|
55
|
+
attr_writer :logger
|
54
56
|
|
55
57
|
# Handle the authentication.
|
56
58
|
#
|
@@ -63,6 +65,7 @@ module Zas
|
|
63
65
|
raise "No authenticator found for #{req.strategy}" unless authenticator
|
64
66
|
{:authenticated? => authenticator.authenticate(req.credentials)}
|
65
67
|
rescue => e
|
68
|
+
logger.info "Error authenticating: #{e.message}"
|
66
69
|
{:error => e.message}
|
67
70
|
end
|
68
71
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zas-service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -41,6 +41,7 @@ files:
|
|
41
41
|
- lib/zas/crypto_providers/sha512.rb
|
42
42
|
- lib/zas/crypto_providers.rb
|
43
43
|
- lib/zas/filters/http_basic_auth.rb
|
44
|
+
- lib/zas/filters/standard_auth.rb
|
44
45
|
- lib/zas/filters.rb
|
45
46
|
- lib/zas/service.rb
|
46
47
|
- lib/zas/service_configuration.rb
|