An implementation of tools.ietf.org/html/draft-ietf-oauth-v2-10
This module will be updated periodically to support newer drafts of the specification, as they become widely deployed.
# File lib/signet/oauth_2.rb, line 55 def self.parse_basic_credentials(credential_string) decoded = Base64.decode64(credential_string) client_id, client_secret = decoded.split(':', 2) return [['client_id', client_id], ['client_secret', client_secret]] end
# File lib/signet/oauth_2.rb, line 61 def self.parse_bearer_credentials(credential_string) access_token = credential_string[%r^([^,\s]+)(?:\s|,|$)/, 1] parameters = [] parameters << ['access_token', access_token] auth_param_string = credential_string[%r^(?:[^,\s]+)\s*,\s*(.*)$/, 1] if auth_param_string # This code will rarely get called, but is included for completeness parameters.concat(Signet.parse_auth_param_list(auth_param_string)) end return parameters end
# File lib/signet/oauth_2.rb, line 77 def self.parse_json_credentials(body) if !body.kind_of?(String) raise TypeError, "Expected String, got #{body.class}." end return MultiJson.load(body) end
# File lib/signet/oauth_2.rb, line 73 def self.parse_oauth_challenge(challenge_string) return Signet.parse_auth_param_list(challenge_string) end
# File lib/signet/oauth_2.rb, line 43 def self.parse_www_authenticate_header(field_value) auth_scheme = field_value[%r^([-._0-9a-zA-Z]+)/, 1] case auth_scheme when %r^OAuth$/ # Other token types may be supported eventually return self.parse_oauth_challenge(field_value[%r^OAuth\s+(.*)$/, 1]) else raise ParseError, 'Parsing non-OAuth WWW-Authenticate headers is out of scope.' end end