durable_streams-rails 0.2.3 → 0.2.4
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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 32b7136264c3c58bf1d1abafec7d87de85527739a1eebfd099042df478fbeb9a
|
|
4
|
+
data.tar.gz: 4cad011b7effea1efeb9f9be19845ed8b5652e0ccce7e2c8971723d9fc661043
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fb55c88972044fd2888e7798df09283878acaccfbd077330b2025908482f6fc9f82c90cdeb8cbd40aecf5cbc421728867da8495034c0e24ae2e6cf37e9a91441
|
|
7
|
+
data.tar.gz: b4a27e45cf852435c8a374654c8ddfb0fcb664a6a92712aa308ab9649bff4e091a7a0c11419d41c08b0632f0138608d7755c34a1d74300f7e68274fbf51b5a64
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
module DurableStreams
|
|
2
2
|
class AuthController < ActionController::API
|
|
3
3
|
def verify
|
|
4
|
-
if
|
|
4
|
+
if request.headers["X-Forwarded-Uri"]
|
|
5
|
+
stream_name ? head(:ok) : head(:unauthorized)
|
|
6
|
+
elsif valid_server_api_key?
|
|
5
7
|
head :ok
|
|
6
8
|
else
|
|
7
9
|
head :unauthorized
|
|
@@ -10,14 +12,13 @@ module DurableStreams
|
|
|
10
12
|
|
|
11
13
|
private
|
|
12
14
|
def stream_name
|
|
13
|
-
|
|
14
|
-
DurableStreams.verified_stream_name(token)
|
|
15
|
-
end
|
|
15
|
+
DurableStreams.verify_signed_url(request.headers["X-Forwarded-Uri"])
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def
|
|
19
|
-
if
|
|
20
|
-
|
|
18
|
+
def valid_server_api_key?
|
|
19
|
+
if auth_header = request.headers["Authorization"]
|
|
20
|
+
auth_header.start_with?("Bearer ") &&
|
|
21
|
+
ActiveSupport::SecurityUtils.secure_compare(auth_header.delete_prefix("Bearer "), DurableStreams.server_api_key)
|
|
21
22
|
end
|
|
22
23
|
end
|
|
23
24
|
end
|
|
@@ -42,6 +42,21 @@ module DurableStreams
|
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
+
initializer "durable_streams.server_api_key" do
|
|
46
|
+
config.after_initialize do
|
|
47
|
+
DurableStreams.server_api_key =
|
|
48
|
+
config.durable_streams.server_api_key ||
|
|
49
|
+
Rails.application.key_generator.generate_key("durable_streams/server_api_key").unpack1("H*")
|
|
50
|
+
|
|
51
|
+
if DurableStreams.base_url.present?
|
|
52
|
+
DurableStreams.configure do |c|
|
|
53
|
+
c.base_url = DurableStreams.base_url
|
|
54
|
+
c.default_headers = { "Authorization" => "Bearer #{DurableStreams.server_api_key}" }
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
45
60
|
# No Action Cable dependency -- load test helpers directly.
|
|
46
61
|
initializer "durable_streams.test_assertions" do
|
|
47
62
|
ActiveSupport.on_load(:active_support_test_case) do
|
|
@@ -14,7 +14,7 @@ module DurableStreams
|
|
|
14
14
|
mattr_accessor :draw_routes, default: true
|
|
15
15
|
|
|
16
16
|
class << self
|
|
17
|
-
attr_writer :signed_stream_verifier_key
|
|
17
|
+
attr_writer :signed_stream_verifier_key, :server_api_key
|
|
18
18
|
|
|
19
19
|
def signed_stream_verifier
|
|
20
20
|
@signed_stream_verifier ||= ActiveSupport::MessageVerifier.new(signed_stream_verifier_key, digest: "SHA256", serializer: JSON)
|
|
@@ -24,6 +24,10 @@ module DurableStreams
|
|
|
24
24
|
@signed_stream_verifier_key or raise ArgumentError, "DurableStreams requires a signed_stream_verifier_key"
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
def server_api_key
|
|
28
|
+
@server_api_key or raise ArgumentError, "DurableStreams requires a server_api_key"
|
|
29
|
+
end
|
|
30
|
+
|
|
27
31
|
def signed_stream_url(*streamables, expires_in: 24.hours)
|
|
28
32
|
path = stream_name_from(streamables)
|
|
29
33
|
token = signed_stream_verifier.generate(path, expires_in: expires_in)
|