module Doorkeeper::JWT
Public Class Methods
configuration()
click to toggle source
# File lib/doorkeeper/jwt/config.rb, line 15 def self.configuration @config || raise(MissingConfiguration) end
configure(&block)
click to toggle source
# File lib/doorkeeper/jwt/config.rb, line 11 def self.configure(&block) @config = Config::Builder.new(&block).build end
gem_version()
click to toggle source
# File lib/doorkeeper/jwt/version.rb, line 5 def self.gem_version Gem::Version.new VERSION::STRING end
generate(opts = {})
click to toggle source
# File lib/doorkeeper/jwt.rb, line 10 def generate(opts = {}) ::JWT.encode( token_payload(opts), secret_key(opts), signing_method, token_headers(opts) ) end
Private Class Methods
application_secret(opts)
click to toggle source
# File lib/doorkeeper/jwt.rb, line 56 def application_secret(opts) if opts[:application].nil? raise( "JWT `use_application_secret` is enabled, but application is nil." \ " This can happen if `client_id` was absent in the request params." ) end secret = if opts[:application].respond_to?(:plaintext_secret) unless opts[:application].secret_strategy.allows_restoring_secrets? raise( "JWT `use_application_secret` is enabled, but secret strategy " \ "doesn't allow plaintext secret restoring" ) end opts[:application].plaintext_secret else opts[:application][:secret] end if secret.nil? raise( "JWT `use_application_secret` is enabled, but the application" \ " secret is nil." ) end secret end
ecdsa_key()
click to toggle source
# File lib/doorkeeper/jwt.rb, line 98 def ecdsa_key OpenSSL::PKey::EC.new(Doorkeeper::JWT.configuration.secret_key) end
ecdsa_key_file()
click to toggle source
# File lib/doorkeeper/jwt.rb, line 106 def ecdsa_key_file secret_key_file_open { |f| OpenSSL::PKey::EC.new(f) } end
ecdsa_signing?()
click to toggle source
# File lib/doorkeeper/jwt.rb, line 90 def ecdsa_signing? /ES\d{3}/ =~ signing_method end
rsa_key()
click to toggle source
# File lib/doorkeeper/jwt.rb, line 94 def rsa_key OpenSSL::PKey::RSA.new(Doorkeeper::JWT.configuration.secret_key) end
rsa_key_file()
click to toggle source
# File lib/doorkeeper/jwt.rb, line 102 def rsa_key_file secret_key_file_open { |f| OpenSSL::PKey::RSA.new(f) } end
rsa_signing?()
click to toggle source
# File lib/doorkeeper/jwt.rb, line 86 def rsa_signing? /RS\d{3}/ =~ signing_method end
secret_key(opts)
click to toggle source
# File lib/doorkeeper/jwt.rb, line 29 def secret_key(opts) opts = { application: {} }.merge(opts) return application_secret(opts) if use_application_secret? return secret_key_file unless secret_key_file.nil? return rsa_key if rsa_signing? return ecdsa_key if ecdsa_signing? Doorkeeper::JWT.configuration.secret_key end
secret_key_file()
click to toggle source
# File lib/doorkeeper/jwt.rb, line 40 def secret_key_file return nil if Doorkeeper::JWT.configuration.secret_key_path.nil? return rsa_key_file if rsa_signing? return ecdsa_key_file if ecdsa_signing? end
secret_key_file_open(&block)
click to toggle source
# File lib/doorkeeper/jwt.rb, line 110 def secret_key_file_open(&block) File.open(Doorkeeper::JWT.configuration.secret_key_path, &block) end
signing_method()
click to toggle source
# File lib/doorkeeper/jwt.rb, line 46 def signing_method return "none" unless Doorkeeper::JWT.configuration.signing_method Doorkeeper::JWT.configuration.signing_method.to_s.upcase end
token_headers(opts = {})
click to toggle source
# File lib/doorkeeper/jwt.rb, line 25 def token_headers(opts = {}) Doorkeeper::JWT.configuration.token_headers.call(opts) end
token_payload(opts = {})
click to toggle source
# File lib/doorkeeper/jwt.rb, line 21 def token_payload(opts = {}) Doorkeeper::JWT.configuration.token_payload.call(opts) end
use_application_secret?()
click to toggle source
# File lib/doorkeeper/jwt.rb, line 52 def use_application_secret? Doorkeeper::JWT.configuration.use_application_secret end