Class: OCI::Signer

Inherits:
BaseSigner show all
Defined in:
lib/oci/signer.rb

Overview

Used to sign HTTP requests as required by Oracle Cloud Infrastructure.

Constant Summary collapse

SIGNING_STRATEGY_ENUM =

enum to define the signing strategy

[STANDARD = 'standard'.freeze, OBJECT_STORAGE = 'object_storage'.freeze].freeze

Constants inherited from BaseSigner

BaseSigner::BODY_HEADERS, BaseSigner::GENERIC_HEADERS, BaseSigner::SIGNATURE_VERSION

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseSigner

#sign

Constructor Details

#initialize(user, fingerprint, tenancy, private_key_file, pass_phrase: nil, private_key_content: nil, signing_strategy: STANDARD) ⇒ Signer

Creates a Signer

Parameters:

  • user (String)

    OCID of the user to be used for authentication, for example “ocidv1:user:oc1:phx:1460406592659:aaaaaaaawcbqrkycbolrirg2n3xjl5fyxe”.

  • fingerprint (String)

    Fingerprint of the key used for authentication, for example “20:3b:97:13:55:1c:5b:0d:d3:37:d8:50:4e:c5:3a:34”

  • tenancy (String)

    OCID of the tenancy

  • private_key_file (String)

    It can be nil if private_key_content is provided. Full path and filename of the unencrypted PEM file, for example “/Users/bgustafs/.ssh/id_rsa.pem”

  • pass_phrase (String) (defaults to: nil)

    Optional pass phrase used to encrypt the private key

  • private_key_content (String) (defaults to: nil)

    Optional if private_key_file is provided. The value should be the content of the unencrypted PEM file.

  • signing_strategy (SIGNING_STRATEGY_ENUM) (defaults to: STANDARD)

    Optional signing for standard service or object storage service



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/oci/signer.rb', line 24

def initialize(
  user,
  fingerprint,
  tenancy,
  private_key_file,
  pass_phrase: nil,
  private_key_content: nil,
  signing_strategy: STANDARD
)
  raise 'Missing required parameter user.' unless user
  raise 'Missing required parameter fingerprint.' unless fingerprint
  raise 'Missing required parameter tenancy.' unless tenancy

  raise 'Missing required parameter private_key_file or private_key_content.' unless private_key_file || private_key_content

  private_key = private_key_content.nil? ? File.read(private_key_file) : private_key_content
  super("#{tenancy}/#{user}/#{fingerprint}", private_key, pass_phrase: pass_phrase, signing_strategy: signing_strategy)
end

Class Method Details

.config_file_auth_builder(config) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/oci/signer.rb', line 43

def self.config_file_auth_builder(config)
  signer = nil

  case config.authentication_type
  when 'instance_principal'
    unless config.delegation_token_file.nil?
      raise 'Delegation Token File not exist' unless File.exist?(File.expand_path(config.delegation_token_file))

      delegation_token = File.read(File.expand_path(config.delegation_token_file)).to_s.strip
      signer ||= OCI::Auth::Signers::InstancePrincipalsDelegationTokenSigner.new(delegation_token) unless delegation_token.nil?
    end
  when 'resource_principal'
    signer ||= OCI::Auth::Signers.resource_principals_signer
  else
    signer ||= OCI::Signer.new(
      config.user,
      config.fingerprint,
      config.tenancy,
      config.key_file,
      pass_phrase: config.pass_phrase,
      private_key_content: config.key_content
    )
  end
  signer
end