github.com/Venafi/vcert/v5@v5.10.2/aruba/features/support/azure_provider.rb (about)

     1  # Define the necessary Azure credentials
     2  CLIENT_ID = ENV['AZURE_CLIENT_ID']
     3  CLIENT_SECRET = ENV['AZURE_CLIENT_SECRET']
     4  TENANT_ID = ENV['AZURE_TENANT_ID']
     5  KEYVAULT_NAME = ENV['AZURE_KEYVAULT_NAME']
     6  
     7  def get_azure_access_token
     8    token_url = URI("https://login.microsoftonline.com/#{TENANT_ID}/oauth2/v2.0/token")
     9    token_request = Net::HTTP::Post.new(token_url)
    10    token_request.set_form_data({
    11      'grant_type' => 'client_credentials',
    12      'client_id' => CLIENT_ID,
    13      'client_secret' => CLIENT_SECRET,
    14      'scope' => 'https://vault.azure.net/.default'
    15    })
    16  
    17    begin
    18      token_response = Net::HTTP.start(token_url.hostname, token_url.port, use_ssl: true) do |http|
    19        http.request(token_request)
    20      end
    21      handle_http_response(token_response)
    22  
    23    rescue BadRequestError, UnauthorizedError, NotFoundError, ServerError => e
    24      puts "Custom Error: #{e.message}"
    25    rescue StandardError => e
    26      puts "An error occurred: #{e.message}"
    27    end
    28  
    29    token_data = JSON.parse(token_response.body)
    30    token_data['access_token']
    31  end
    32  
    33  def delete_azure_certificate(certificate_name)
    34    vault_url = URI("https://#{KEYVAULT_NAME}.vault.azure.net/certificates/#{certificate_name}?api-version=7.2")
    35    access_token = get_azure_access_token
    36  
    37    delete_request = Net::HTTP::Delete.new(vault_url)
    38    delete_request['Authorization'] = "Bearer #{access_token}"
    39  
    40    begin
    41      delete_response = Net::HTTP.start(vault_url.hostname, vault_url.port, use_ssl: true) do |http|
    42        http.request(delete_request)
    43      end
    44      handle_http_response(delete_response)
    45    rescue BadRequestError, UnauthorizedError, NotFoundError, ServerError => e
    46      puts "Custom Error: #{e.message}"
    47    rescue StandardError => e
    48      puts "An error occurred: #{e.message}"
    49    end
    50  end