Initial commit
This commit is contained in:
26
config/initializers/jwt.rb
Normal file
26
config/initializers/jwt.rb
Normal file
@@ -0,0 +1,26 @@
|
||||
require 'yaml'
|
||||
require 'openssl'
|
||||
|
||||
(YAML.load_file('config/management_api.yml') || {}).deep_symbolize_keys!.tap do |x|
|
||||
x.fetch(:keychain).each do |id, key|
|
||||
key = OpenSSL::PKey.read(Base64.urlsafe_decode64(key.fetch(:value)))
|
||||
if key.private?
|
||||
raise ArgumentError, 'keychain.' + id.to_s + ' was set to private key, ' \
|
||||
'however it should be public (in config/management_api.yml).'
|
||||
end
|
||||
x[:keychain][id][:value] = key
|
||||
end
|
||||
|
||||
x.fetch(:scopes).values.each do |scope|
|
||||
%i[permitted_signers mandatory_signers].each do |list|
|
||||
scope[list] = scope.fetch(list, []).map(&:to_sym)
|
||||
scope[list] = scope.fetch(list, []).map(&:to_sym)
|
||||
if list == :mandatory_signers && scope[list].empty?
|
||||
raise ArgumentError, 'scopes.' + scope.to_s + '.' + list.to_s + ' is empty, ' \
|
||||
'however it should contain at least one value (in config/management_api.yml).'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
API::V2::Management::JWTAuthenticationMiddleware.security_configuration = x
|
||||
end
|
||||
Reference in New Issue
Block a user