Class: JwtAuthCognito::Configuration
- Inherits:
-
Object
- Object
- JwtAuthCognito::Configuration
- Defined in:
- lib/jwt_auth_cognito/configuration.rb
Instance Attribute Summary collapse
-
#cognito_client_id ⇒ Object
Returns the value of attribute cognito_client_id.
-
#cognito_client_secret ⇒ Object
Returns the value of attribute cognito_client_secret.
-
#cognito_region ⇒ Object
Returns the value of attribute cognito_region.
-
#cognito_user_pool_id ⇒ Object
Returns the value of attribute cognito_user_pool_id.
-
#enable_api_key_validation ⇒ Object
Returns the value of attribute enable_api_key_validation.
-
#enable_user_data_retrieval ⇒ Object
Returns the value of attribute enable_user_data_retrieval.
-
#environment ⇒ Object
Returns the value of attribute environment.
-
#jwks_cache_ttl ⇒ Object
Returns the value of attribute jwks_cache_ttl.
-
#redis_ca_cert_name ⇒ Object
Returns the value of attribute redis_ca_cert_name.
-
#redis_ca_cert_path ⇒ Object
Returns the value of attribute redis_ca_cert_path.
-
#redis_connect_timeout ⇒ Object
Returns the value of attribute redis_connect_timeout.
-
#redis_db ⇒ Object
Returns the value of attribute redis_db.
-
#redis_host ⇒ Object
Returns the value of attribute redis_host.
-
#redis_password ⇒ Object
Returns the value of attribute redis_password.
-
#redis_port ⇒ Object
Returns the value of attribute redis_port.
-
#redis_read_timeout ⇒ Object
Returns the value of attribute redis_read_timeout.
-
#redis_ssl ⇒ Object
Returns the value of attribute redis_ssl.
-
#redis_timeout ⇒ Object
Returns the value of attribute redis_timeout.
-
#redis_verify_mode ⇒ Object
Returns the value of attribute redis_verify_mode.
-
#validation_mode ⇒ Object
Returns the value of attribute validation_mode.
Instance Method Summary collapse
- #calculate_secret_hash(identifier) ⇒ Object
- #cognito_issuer ⇒ Object
- #development? ⇒ Boolean
- #has_client_secret? ⇒ Boolean
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #jwks_url ⇒ Object
- #production? ⇒ Boolean
- #user_data_config ⇒ Object
- #validate! ⇒ Object
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 12 def initialize @cognito_region = ENV['COGNITO_REGION'] || ENV['AWS_REGION'] || 'us-east-1' @cognito_user_pool_id = ENV.fetch('COGNITO_USER_POOL_ID', nil) @cognito_client_id = ENV.fetch('COGNITO_CLIENT_ID', nil) @cognito_client_secret = ENV.fetch('COGNITO_CLIENT_SECRET', nil) # Redis configuration with environment variables @redis_host = ENV['REDIS_HOST'] || 'localhost' @redis_port = (ENV['REDIS_PORT'] || 6379).to_i @redis_password = ENV.fetch('REDIS_PASSWORD', nil) @redis_db = (ENV['REDIS_DB'] || 0).to_i @redis_ssl = ENV['REDIS_TLS'] == 'true' || ENV['REDIS_SSL'] == 'true' @redis_timeout = (ENV['REDIS_TIMEOUT'] || 5).to_i @redis_connect_timeout = (ENV['REDIS_CONNECT_TIMEOUT'] || 10).to_i @redis_read_timeout = (ENV['REDIS_READ_TIMEOUT'] || 10).to_i # TLS specific configuration (compatible with auth-service) @redis_ca_cert_path = ENV.fetch('REDIS_CA_CERT_PATH', nil) @redis_ca_cert_name = ENV.fetch('REDIS_CA_CERT_NAME', nil) @redis_verify_mode = ENV['REDIS_VERIFY_MODE'] || 'peer' @jwks_cache_ttl = (ENV['JWKS_CACHE_TTL'] || 3600).to_i # 1 hour @environment = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || ENV['NODE_ENV'] || 'development' @validation_mode = production? ? :secure : :basic @enable_api_key_validation = ENV['ENABLE_API_KEY_VALIDATION'] == 'true' @enable_user_data_retrieval = ENV['ENABLE_USER_DATA_RETRIEVAL'] == 'true' end |
Instance Attribute Details
#cognito_client_id ⇒ Object
Returns the value of attribute cognito_client_id.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def cognito_client_id @cognito_client_id end |
#cognito_client_secret ⇒ Object
Returns the value of attribute cognito_client_secret.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def cognito_client_secret @cognito_client_secret end |
#cognito_region ⇒ Object
Returns the value of attribute cognito_region.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def cognito_region @cognito_region end |
#cognito_user_pool_id ⇒ Object
Returns the value of attribute cognito_user_pool_id.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def cognito_user_pool_id @cognito_user_pool_id end |
#enable_api_key_validation ⇒ Object
Returns the value of attribute enable_api_key_validation.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def enable_api_key_validation @enable_api_key_validation end |
#enable_user_data_retrieval ⇒ Object
Returns the value of attribute enable_user_data_retrieval.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def enable_user_data_retrieval @enable_user_data_retrieval end |
#environment ⇒ Object
Returns the value of attribute environment.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def environment @environment end |
#jwks_cache_ttl ⇒ Object
Returns the value of attribute jwks_cache_ttl.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def jwks_cache_ttl @jwks_cache_ttl end |
#redis_ca_cert_name ⇒ Object
Returns the value of attribute redis_ca_cert_name.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_ca_cert_name @redis_ca_cert_name end |
#redis_ca_cert_path ⇒ Object
Returns the value of attribute redis_ca_cert_path.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_ca_cert_path @redis_ca_cert_path end |
#redis_connect_timeout ⇒ Object
Returns the value of attribute redis_connect_timeout.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_connect_timeout @redis_connect_timeout end |
#redis_db ⇒ Object
Returns the value of attribute redis_db.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_db @redis_db end |
#redis_host ⇒ Object
Returns the value of attribute redis_host.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_host @redis_host end |
#redis_password ⇒ Object
Returns the value of attribute redis_password.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_password @redis_password end |
#redis_port ⇒ Object
Returns the value of attribute redis_port.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_port @redis_port end |
#redis_read_timeout ⇒ Object
Returns the value of attribute redis_read_timeout.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_read_timeout @redis_read_timeout end |
#redis_ssl ⇒ Object
Returns the value of attribute redis_ssl.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_ssl @redis_ssl end |
#redis_timeout ⇒ Object
Returns the value of attribute redis_timeout.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_timeout @redis_timeout end |
#redis_verify_mode ⇒ Object
Returns the value of attribute redis_verify_mode.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def redis_verify_mode @redis_verify_mode end |
#validation_mode ⇒ Object
Returns the value of attribute validation_mode.
5 6 7 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 5 def validation_mode @validation_mode end |
Instance Method Details
#calculate_secret_hash(identifier) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 66 def calculate_secret_hash(identifier) return '' unless has_client_secret? return '' unless cognito_client_id = identifier + cognito_client_id require 'openssl' require 'base64' begin hmac = OpenSSL::HMAC.digest('SHA256', cognito_client_secret, ) Base64.encode64(hmac).strip rescue StandardError => e raise ConfigurationError, "Error calculating secret hash: #{e.}" end end |
#cognito_issuer ⇒ Object
48 49 50 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 48 def cognito_issuer "https://cognito-idp.#{cognito_region}.amazonaws.com/#{cognito_user_pool_id}" end |
#development? ⇒ Boolean
44 45 46 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 44 def development? @environment == 'development' end |
#has_client_secret? ⇒ Boolean
62 63 64 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 62 def has_client_secret? !cognito_client_secret.nil? && !cognito_client_secret.empty? end |
#jwks_url ⇒ Object
52 53 54 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 52 def jwks_url "#{cognito_issuer}/.well-known/jwks.json" end |
#production? ⇒ Boolean
40 41 42 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 40 def production? @environment == 'production' end |
#user_data_config ⇒ Object
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 83 def user_data_config { enable_user_data_retrieval: enable_user_data_retrieval, include_applications: ENV['INCLUDE_APPLICATIONS'] != 'false', include_organizations: ENV['INCLUDE_ORGANIZATIONS'] != 'false', include_roles: ENV['INCLUDE_ROLES'] != 'false', include_effective_permissions: ENV['INCLUDE_EFFECTIVE_PERMISSIONS'] == 'true', cache_timeout: (ENV['USER_DATA_CACHE_TIMEOUT'] || 300).to_i } end |
#validate! ⇒ Object
56 57 58 59 60 |
# File 'lib/jwt_auth_cognito/configuration.rb', line 56 def validate! raise ConfigurationError, 'cognito_user_pool_id is required' unless cognito_user_pool_id raise ConfigurationError, 'cognito_region is required' unless cognito_region raise ConfigurationError, 'redis_host is required' unless redis_host end |