Class: Google::Auth::GCECredentials
- Inherits:
-
Signet::OAuth2::Client
- Object
- Signet::OAuth2::Client
- Google::Auth::GCECredentials
- Defined in:
- lib/googleauth/compute_engine.rb
Overview
Extends Signet::OAuth2::Client so that the auth token is obtained from the GCE metadata server.
Constant Summary
Constants included from BaseClient
Instance Attribute Summary
Attributes included from BaseClient
Class Method Summary collapse
-
.on_gce?(_options = {}, _reload = false) ⇒ Boolean
Detect if this appear to be a GCE instance, by checking if metadata is available.
- .reset_cache ⇒ Object (also: unmemoize_all)
Instance Method Summary collapse
-
#fetch_access_token(_options = {}) ⇒ Object
Overrides the super class method to change how access tokens are fetched.
-
#initialize(options = {}) ⇒ GCECredentials
constructor
Construct a GCECredentials.
Methods inherited from Signet::OAuth2::Client
#build_default_connection, #configure_connection, #fetch_access_token!, #generate_access_token_request, #googleauth_orig_generate_access_token_request, #orig_fetch_access_token!, #retry_with_error, #token_type, #update_token!, #update_token_signet_base
Methods included from BaseClient
#apply, #apply!, #expires_within?, #needs_access_token?, #notify_refresh_listeners, #on_refresh, #updater_proc
Constructor Details
#initialize(options = {}) ⇒ GCECredentials
Construct a GCECredentials
87 88 89 90 91 92 93 94 |
# File 'lib/googleauth/compute_engine.rb', line 87 def initialize = {} # Override the constructor to remember whether the universe domain was # overridden by a constructor argument. @universe_domain_overridden = ["universe_domain"] || [:universe_domain] ? true : false # TODO: Remove when universe domain metadata endpoint is stable (see b/349488459). @disable_universe_domain_check = true super end |
Class Method Details
.on_gce?(_options = {}, _reload = false) ⇒ Boolean
Detect if this appear to be a GCE instance, by checking if metadata is available. The parameters are deprecated and unused.
72 73 74 |
# File 'lib/googleauth/compute_engine.rb', line 72 def on_gce? = {}, _reload = false # rubocop:disable Style/OptionalBooleanParameter Google::Cloud.env. end |
Instance Method Details
#fetch_access_token(_options = {}) ⇒ Object
Overrides the super class method to change how access tokens are fetched.
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/googleauth/compute_engine.rb', line 111 def fetch_access_token = {} query, entry = if token_type == :id_token [{ "audience" => target_audience, "format" => "full" }, "service-accounts/default/identity"] else [{}, "service-accounts/default/token"] end query[:scopes] = Array(scope).join "," if scope begin log_fetch_query resp = Google::Cloud.env. "instance", entry, query: query log_fetch_resp resp case resp.status when 200 build_token_hash resp.body, resp.headers["content-type"], resp.retrieval_monotonic_time when 403, 500 raise Signet::UnexpectedStatusError, "Unexpected error code #{resp.status} #{UNEXPECTED_ERROR_SUFFIX}" when 404 raise Signet::AuthorizationError, NO_METADATA_SERVER_ERROR else raise Signet::AuthorizationError, "Unexpected error code #{resp.status} #{UNEXPECTED_ERROR_SUFFIX}" end rescue Google::Cloud::Env::MetadataServerNotResponding => e log_fetch_err e raise Signet::AuthorizationError, e. end end |