File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -417,3 +417,34 @@ auth:
417
417
secret_env_key : SUPER_COOL_SECRET # the name of the environment variable containing the shared secret - used by `fetch_secret(config)` in the plugin
418
418
header : Authorization
419
419
` ` `
420
+
421
+ Here is a mini example of how you might do some sort of IP filtering in a custom auth plugin:
422
+
423
+ ` ` ` ruby
424
+ # frozen_string_literal: true
425
+ # Example custom auth plugin for IP filtering
426
+ module Hooks
427
+ module Plugins
428
+ module Auth
429
+ class IpFilteringPlugin < Base
430
+ def self.valid?(payload:, headers:, config:)
431
+ # Get the allowed IPs from the configuration (opts is a hash containing additional options that can be set in any endpoint configuration)
432
+ allowed_ips = config.dig(:opts, :allowed_ips) || []
433
+
434
+ # Get the request IP from headers or payload
435
+ # Find the IP via the request headers with case-insensitive matching - this is a helper method available in the base class
436
+ # so it is available to all auth plugins.
437
+ # This example assumes the IP is in the "X-Forwarded-For" header, which is common for proxied requests
438
+ request_ip = find_header_value(headers, "X-Forwarded-For")
439
+
440
+ # If the request IP is not found, return false
441
+ return false unless request_ip
442
+
443
+ # Return true if the request IP is in the allowed IPs list
444
+ allowed_ips.include?(request_ip)
445
+ end
446
+ end
447
+ end
448
+ end
449
+ end
450
+ ```
Original file line number Diff line number Diff line change @@ -72,6 +72,8 @@ def build_base_environment
72
72
end
73
73
74
74
# Add HTTP headers to the environment with proper Rack naming convention
75
+ # Note: This will generally add headers like HTTP_X_CUSTOM_HEADER. For example, the HTTP_X_FORWARDED_FOR
76
+ # is a common header that is used to pass the original client IP address through proxies.
75
77
#
76
78
# @param rack_env [Hash] Environment hash to modify
77
79
def add_http_headers ( rack_env )
You can’t perform that action at this time.
0 commit comments