strelka 0.0.1.pre.301 → 0.0.1.pre.303
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.
- data.tar.gz.sig +0 -0
- data/ChangeLog +41 -3
- data/Rakefile +2 -2
- data/lib/strelka/authprovider/basic.rb +22 -44
- data/spec/strelka/authprovider/basic_spec.rb +0 -4
- metadata +6 -6
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
|
Binary file
|
data/ChangeLog
CHANGED
|
@@ -1,8 +1,46 @@
|
|
|
1
|
+
2012-09-18 Michael Granger <ged@FaerieMUD.org>
|
|
2
|
+
|
|
3
|
+
* lib/strelka/authprovider/basic.rb,
|
|
4
|
+
spec/strelka/authprovider/basic_spec.rb:
|
|
5
|
+
Simplified Strelka::AuthProvider::Basic.
|
|
6
|
+
|
|
7
|
+
- removed the pbkdf2_hmac stuff for simplicity
|
|
8
|
+
- made it easier to use it as a base class for other auth providers.
|
|
9
|
+
[dbb4523ad258] [tip]
|
|
10
|
+
|
|
11
|
+
* Rakefile:
|
|
12
|
+
Update dependencies
|
|
13
|
+
[1962465c2c92]
|
|
14
|
+
|
|
15
|
+
2012-09-05 Michael Granger <ged@FaerieMUD.org>
|
|
16
|
+
|
|
17
|
+
* lib/strelka/cookie.rb:
|
|
18
|
+
Pull up cookie value method into a protected method for overriding.
|
|
19
|
+
|
|
20
|
+
This was done to facilitate the creation of specialized cookie
|
|
21
|
+
classes.
|
|
22
|
+
[6f6203c7f0aa]
|
|
23
|
+
|
|
24
|
+
* README.rdoc:
|
|
25
|
+
Small README fixes
|
|
26
|
+
[0c7cd9948e64]
|
|
27
|
+
|
|
28
|
+
2012-08-24 Michael Granger <ged@FaerieMUD.org>
|
|
29
|
+
|
|
30
|
+
* Deploying.rdoc, Manifest.txt, Plugins.rdoc, README.rdoc,
|
|
31
|
+
Tutorial.rdoc, manual/src/deploying.page, manual/src/plugins.page,
|
|
32
|
+
manual/src/tutorial.page:
|
|
33
|
+
Documentation update.
|
|
34
|
+
|
|
35
|
+
Got most of the default plugins covered at least minimally. Split
|
|
36
|
+
out the rest of the manual into RDoc pages.
|
|
37
|
+
[41ef7a20e7cb]
|
|
38
|
+
|
|
1
39
|
2012-08-24 Mahlon E. Smith <mahlon@martini.nu>
|
|
2
40
|
|
|
3
41
|
* examples/strelka.conf.example:
|
|
4
42
|
Add a documented example configuration file.
|
|
5
|
-
[9d8ce0e99016]
|
|
43
|
+
[9d8ce0e99016]
|
|
6
44
|
|
|
7
45
|
2012-08-23 Mahlon E. Smith <mahlon@martini.nu>
|
|
8
46
|
|
|
@@ -19,7 +57,7 @@
|
|
|
19
57
|
* lib/strelka/app/restresources.rb:
|
|
20
58
|
Don't try to auto-create restresource routes for no-param datasets,
|
|
21
59
|
either.
|
|
22
|
-
[10af8924212c]
|
|
60
|
+
[10af8924212c]
|
|
23
61
|
|
|
24
62
|
2012-08-13 Michael Granger <ged@FaerieMUD.org>
|
|
25
63
|
|
|
@@ -1003,7 +1041,7 @@
|
|
|
1003
1041
|
|
|
1004
1042
|
* lib/strelka/app/errors.rb, spec/strelka/app/errors_spec.rb:
|
|
1005
1043
|
Add documentation for the Errors plugin, improve test coverage.
|
|
1006
|
-
[ff3ef6e5a7a1]
|
|
1044
|
+
[ff3ef6e5a7a1]
|
|
1007
1045
|
|
|
1008
1046
|
* Manifest.txt:
|
|
1009
1047
|
Add session files to the manifest
|
data/Rakefile
CHANGED
|
@@ -30,8 +30,8 @@ hoespec = Hoe.spec 'strelka' do
|
|
|
30
30
|
self.dependency 'loggability', '~> 0.4'
|
|
31
31
|
self.dependency 'mongrel2', '~> 0.30'
|
|
32
32
|
self.dependency 'pluginfactory', '~> 1.0'
|
|
33
|
-
self.dependency 'sysexits', '~> 1.
|
|
34
|
-
self.dependency 'trollop', '~>
|
|
33
|
+
self.dependency 'sysexits', '~> 1.1'
|
|
34
|
+
self.dependency 'trollop', '~> 2.0'
|
|
35
35
|
self.dependency 'uuidtools', '~> 2.1'
|
|
36
36
|
|
|
37
37
|
self.dependency 'hoe-deveiate', '~> 0.1', :developer
|
|
@@ -14,7 +14,7 @@ require 'strelka/mixins'
|
|
|
14
14
|
#
|
|
15
15
|
# == Configuration
|
|
16
16
|
#
|
|
17
|
-
# The configuration for this provider is read from the '
|
|
17
|
+
# The configuration for this provider is read from the 'basicauth' section of the config, and
|
|
18
18
|
# may contain the following keys:
|
|
19
19
|
#
|
|
20
20
|
# [realm]:: the HTTP Basic realm. Defaults to the app's application ID
|
|
@@ -33,6 +33,11 @@ require 'strelka/mixins'
|
|
|
33
33
|
# jblack: "1pAnQNSVtpL1z88QwXV4sG8NMP8="
|
|
34
34
|
# kmurgen: "MZj9+VhZ8C9+aJhmwp+kWBL76Vs="
|
|
35
35
|
#
|
|
36
|
+
# == Caveats
|
|
37
|
+
#
|
|
38
|
+
# This auth provider is intended as documentation and demonstration only; you should use a
|
|
39
|
+
# more cryptographically secure strategy for real-world applications.
|
|
40
|
+
#
|
|
36
41
|
class Strelka::AuthProvider::Basic < Strelka::AuthProvider
|
|
37
42
|
extend Configurability,
|
|
38
43
|
Strelka::MethodUtilities
|
|
@@ -47,13 +52,6 @@ class Strelka::AuthProvider::Basic < Strelka::AuthProvider
|
|
|
47
52
|
users: {},
|
|
48
53
|
}
|
|
49
54
|
|
|
50
|
-
# The amount of work to do while encrypting -- higher number == more work == less suceptable
|
|
51
|
-
# to brute-force attacks
|
|
52
|
-
ENCRYPT_ITERATIONS = 20_000
|
|
53
|
-
|
|
54
|
-
# The Digest class to use when encrypting passwords
|
|
55
|
-
DIGEST_CLASS = OpenSSL::Digest::SHA256
|
|
56
|
-
|
|
57
55
|
|
|
58
56
|
##
|
|
59
57
|
# The Hash of users and their SHA1+Base64'ed passwords
|
|
@@ -82,22 +80,6 @@ class Strelka::AuthProvider::Basic < Strelka::AuthProvider
|
|
|
82
80
|
### I N S T A N C E M E T H O D S
|
|
83
81
|
#################################################################
|
|
84
82
|
|
|
85
|
-
### Create a new Default AuthProvider.
|
|
86
|
-
def initialize( * )
|
|
87
|
-
super
|
|
88
|
-
|
|
89
|
-
# Default the authentication realm to the application's ID
|
|
90
|
-
unless self.class.realm
|
|
91
|
-
self.log.warn "No realm configured -- using the app id"
|
|
92
|
-
self.class.realm = self.app.conn.app_id
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
unless self.class.users
|
|
96
|
-
self.log.warn "No users configured -- using an empty user list"
|
|
97
|
-
self.class.users = {}
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
83
|
|
|
102
84
|
######
|
|
103
85
|
public
|
|
@@ -120,12 +102,7 @@ class Strelka::AuthProvider::Basic < Strelka::AuthProvider
|
|
|
120
102
|
|
|
121
103
|
# Split the credentials, check for valid user
|
|
122
104
|
username, password = credentials.split( ':', 2 )
|
|
123
|
-
|
|
124
|
-
self.log_failure "No such user %p." % [ username ]
|
|
125
|
-
|
|
126
|
-
# Fail if the password's hash doesn't match
|
|
127
|
-
self.log_failure "Password mismatch." unless
|
|
128
|
-
digest == Digest::SHA1.base64digest( password )
|
|
105
|
+
self.check_password( username, password )
|
|
129
106
|
|
|
130
107
|
# Success!
|
|
131
108
|
self.log.info "Authentication for %p succeeded." % [ username ]
|
|
@@ -137,26 +114,27 @@ class Strelka::AuthProvider::Basic < Strelka::AuthProvider
|
|
|
137
114
|
protected
|
|
138
115
|
#########
|
|
139
116
|
|
|
117
|
+
### Return +true+ if the given +password+ is valid for the specified +username+. Always
|
|
118
|
+
### returns false for non-existant users.
|
|
119
|
+
def check_password( username, password )
|
|
120
|
+
digest = self.class.users[ username ] or
|
|
121
|
+
self.log_failure "No such user %p." % [ username ]
|
|
122
|
+
|
|
123
|
+
# Fail if the password's hash doesn't match
|
|
124
|
+
self.log_failure "Password mismatch." unless
|
|
125
|
+
digest == Digest::SHA1.base64digest( password )
|
|
126
|
+
|
|
127
|
+
return true
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
|
|
140
131
|
### Syntax sugar to allow returning 'false' while logging a reason for doing so.
|
|
141
132
|
### Log a message at 'info' level and return false.
|
|
142
133
|
def log_failure( reason )
|
|
143
134
|
self.log.warn "Auth failure: %s" % [ reason ]
|
|
144
|
-
header = "Basic realm=%s" % [ self.class.realm ]
|
|
135
|
+
header = "Basic realm=%s" % [ self.class.realm || self.app.conn.app_id ]
|
|
145
136
|
finish_with( HTTP::AUTH_REQUIRED, "Requires authentication.", www_authenticate: header )
|
|
146
137
|
end
|
|
147
138
|
|
|
148
139
|
|
|
149
|
-
### (undocumented)
|
|
150
|
-
def encrypt( pass, salt=nil )
|
|
151
|
-
salt ||= OpenSSL::Random.random_bytes( 16 ) #store this with the generated value
|
|
152
|
-
iter = ENCRYPT_ITERATIONS
|
|
153
|
-
digest = DIGEST_CLASS.new
|
|
154
|
-
len = digest.digest_length
|
|
155
|
-
|
|
156
|
-
value = OpenSSL::PKCS5.pbkdf2_hmac( pass, salt, iter, len, digest )
|
|
157
|
-
|
|
158
|
-
return [ value, salt ].join( ':' )
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
|
|
162
140
|
end # class Strelka::AuthProvider::Basic
|
|
@@ -64,10 +64,6 @@ describe Strelka::AuthProvider::Basic do
|
|
|
64
64
|
# Examples
|
|
65
65
|
#
|
|
66
66
|
|
|
67
|
-
it "uses the app ID as the basic auth realm if none is explicitly configured" do
|
|
68
|
-
described_class.realm.should == @app.conn.app_id
|
|
69
|
-
end
|
|
70
|
-
|
|
71
67
|
it "can be configured via the Configurability API" do
|
|
72
68
|
described_class.configure( @config )
|
|
73
69
|
described_class.realm.should == @config[:realm]
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: strelka
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.1.pre.
|
|
4
|
+
version: 0.0.1.pre.303
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
|
36
36
|
YUhDS0xaZFNLai9SSHVUT3QrZ2JsUmV4OEZBaDhOZUEKY21saFhlNDZwWk5K
|
|
37
37
|
Z1dLYnhaYWg4NWpJang5NWhSOHZPSStOQU01aUg5a09xSzEzRHJ4YWNUS1Bo
|
|
38
38
|
cWo1UGp3RgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
|
|
39
|
-
date: 2012-09-
|
|
39
|
+
date: 2012-09-18 00:00:00.000000000 Z
|
|
40
40
|
dependencies:
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: configurability
|
|
@@ -173,7 +173,7 @@ dependencies:
|
|
|
173
173
|
requirements:
|
|
174
174
|
- - ~>
|
|
175
175
|
- !ruby/object:Gem::Version
|
|
176
|
-
version: '1.
|
|
176
|
+
version: '1.1'
|
|
177
177
|
type: :runtime
|
|
178
178
|
prerelease: false
|
|
179
179
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -181,7 +181,7 @@ dependencies:
|
|
|
181
181
|
requirements:
|
|
182
182
|
- - ~>
|
|
183
183
|
- !ruby/object:Gem::Version
|
|
184
|
-
version: '1.
|
|
184
|
+
version: '1.1'
|
|
185
185
|
- !ruby/object:Gem::Dependency
|
|
186
186
|
name: trollop
|
|
187
187
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -189,7 +189,7 @@ dependencies:
|
|
|
189
189
|
requirements:
|
|
190
190
|
- - ~>
|
|
191
191
|
- !ruby/object:Gem::Version
|
|
192
|
-
version: '
|
|
192
|
+
version: '2.0'
|
|
193
193
|
type: :runtime
|
|
194
194
|
prerelease: false
|
|
195
195
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -197,7 +197,7 @@ dependencies:
|
|
|
197
197
|
requirements:
|
|
198
198
|
- - ~>
|
|
199
199
|
- !ruby/object:Gem::Version
|
|
200
|
-
version: '
|
|
200
|
+
version: '2.0'
|
|
201
201
|
- !ruby/object:Gem::Dependency
|
|
202
202
|
name: uuidtools
|
|
203
203
|
requirement: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
|
Binary file
|