Class: AzureBlob::WorkloadIdentity

Inherits:
Object
  • Object
show all
Defined in:
lib/azure_blob/workload_identity.rb

Overview

:nodoc:

Constant Summary collapse

IDENTITY_ENDPOINT =
"https://login.microsoftonline.com/#{ENV['AZURE_TENANT_ID']}/oauth2/v2.0/token"
CLIENT_ID =
ENV["AZURE_CLIENT_ID"]
SCOPE =
"https://storage.azure.com/.default"
GRANT_TYPE =
"client_credentials"
CLIENT_ASSERTION_TYPE =
"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"
FEDERATED_TOKEN_FILE =
ENV["AZURE_FEDERATED_TOKEN_FILE"].to_s

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeWorkloadIdentity

Returns a new instance of WorkloadIdentity.



15
16
17
# File 'lib/azure_blob/workload_identity.rb', line 15

def initialize
  @identity_uri = URI.parse(IDENTITY_ENDPOINT)
end

Class Method Details

.federated_token?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/azure_blob/workload_identity.rb', line 11

def self.federated_token?
  !FEDERATED_TOKEN_FILE.empty?
end

Instance Method Details

#expiration(response) ⇒ Object



31
32
33
# File 'lib/azure_blob/workload_identity.rb', line 31

def expiration(response)
  Time.now + response["expires_in"].to_i
end

#requestObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/azure_blob/workload_identity.rb', line 19

def request
  AzureBlob::Http.new(@identity_uri).post(
    URI.encode_www_form(
      client_id: CLIENT_ID,
      scope: SCOPE,
      client_assertion_type: CLIENT_ASSERTION_TYPE,
      client_assertion: federated_token,
      grant_type: GRANT_TYPE
    )
  )
end