Class: Bosh::Director::Api::UAAIdentityProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/bosh/director/api/uaa_identity_provider.rb

Constant Summary collapse

MAX_TOKEN_EXTENSION_TIME_IN_SECONDS =
3600

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ UAAIdentityProvider

Returns a new instance of UAAIdentityProvider.



9
10
11
12
13
# File 'lib/bosh/director/api/uaa_identity_provider.rb', line 9

def initialize(options)
  @url = options.fetch('url')
  Config.logger.debug "Initializing UAA Identity provider with url #{@url}"
  @token_coder = CF::UAA::TokenCoder.new(skey: options.fetch('symmetric_key', nil), pkey: options.fetch('public_key', nil), scope: [])
end

Instance Method Details

#client_infoObject



19
20
21
22
23
24
25
26
# File 'lib/bosh/director/api/uaa_identity_provider.rb', line 19

def client_info
  {
    'type' => 'uaa',
    'options' => {
      'url' => @url
    }
  }
end

#get_user(request_env, options) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/bosh/director/api/uaa_identity_provider.rb', line 28

def get_user(request_env, options)
  auth_header = request_env['HTTP_AUTHORIZATION']

  if options[:extended_token_timeout]
    request_time_in_seconds = request_env.fetch('HTTP_X_BOSH_UPLOAD_REQUEST_TIME').to_i
    request_time_in_seconds = MAX_TOKEN_EXTENSION_TIME_IN_SECONDS if request_time_in_seconds > MAX_TOKEN_EXTENSION_TIME_IN_SECONDS

    Config.logger.debug("Using extended token timeout, request took #{request_time_in_seconds} seconds")

    token = @token_coder.decode_at_reference_time(auth_header, Time.now.to_i - request_time_in_seconds)
  else
    token = @token_coder.decode(auth_header)
  end

  UaaUser.new(token)
rescue CF::UAA::DecodeError, CF::UAA::AuthError => e
  raise AuthenticationError, e.message
end

#supports_api_update?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/bosh/director/api/uaa_identity_provider.rb', line 15

def supports_api_update?
  false
end