class Mdm::Enrollment::Auth
Public Class Methods
token()
click to toggle source
# File lib/mdm/enrollment/service/auth.rb, line 20 def token @@token ||= new.obtain_token end
update_token_from_response(response)
click to toggle source
# File lib/mdm/enrollment/service/auth.rb, line 24 def update_token_from_response(response) if response && token = response.headers['x-adm-auth-session'] @@token = token end end
Public Instance Methods
obtain_token()
click to toggle source
# File lib/mdm/enrollment/service/auth.rb, line 32 def obtain_token client.get '/session', headers: { 'Authorization' => authorization_header } client.response['auth_session_token'] end
params()
click to toggle source
# File lib/mdm/enrollment/service/auth.rb, line 40 def params @params ||= { oauth_consumer_key: consumer_key, oauth_token: access_token, oauth_nonce: nonce, oauth_timestamp: Time.now.getutc.to_i.to_s, oauth_version: '1.0', oauth_signature_method: 'HMAC-SHA1' } end
Private Instance Methods
base_str()
click to toggle source
# File lib/mdm/enrollment/service/auth.rb, line 64 def base_str # Encode, sort and join params params_encoded = params.inject({}) { |hash, (key, value)| hash[CGI::escape(key.to_s)] = CGI::escape(value) hash }.sort.map { |key, value| "#{key}=#{value}" }.join('&') # Request method + url with path + params, escaped and joined by & [ 'GET', "https://mdmenrollment.apple.com/session", params_encoded ].map { |str| CGI::escape(str) }.join('&') end
nonce()
click to toggle source
# File lib/mdm/enrollment/service/auth.rb, line 90 def nonce @nonce ||= Base64.encode64( OpenSSL::Random.random_bytes(7) ).gsub(/\W/, '') end
sign(base_str)
click to toggle source
# File lib/mdm/enrollment/service/auth.rb, line 83 def sign(base_str) key = "#{CGI::escape(consumer_secret)}&#{CGI::escape(access_secret)}" digest = OpenSSL::Digest.new('sha1') hmac = OpenSSL::HMAC.digest(digest, key, base_str) CGI::escape(Base64.encode64(hmac).chomp.gsub(/\n/, '')) end