Go to the documentation of this file.
29 #include "absl/status/statusor.h"
30 #include "absl/strings/match.h"
31 #include "absl/strings/string_view.h"
32 #include "absl/strings/strip.h"
74 #define GRPC_COMPUTE_ENGINE_DETECTION_HOST "metadata.google.internal."
75 #define GRPC_GOOGLE_CREDENTIAL_CREATION_ERROR \
76 "Failed to create Google credentials"
106 bool IsXdsNonCfeCluster(
const char* xds_cluster) {
107 if (xds_cluster ==
nullptr)
return false;
111 if (!uri.ok())
return true;
112 return uri->authority() !=
"traffic-director-c2p.xds.googleapis.com" ||
114 "/envoy.config.cluster.v3.Cluster/google_cfe_");
128 const char* xds_cluster =
130 const bool is_xds_non_cfe_cluster = IsXdsNonCfeCluster(xds_cluster);
131 const bool use_alts = is_grpclb_load_balancer ||
132 is_backend_from_grpclb_load_balancer ||
133 is_xds_non_cfe_cluster;
150 static const char* args_to_remove[] = {
183 if (strcmp(
header->key,
"Metadata-Flavor") == 0 &&
184 strcmp(
header->value,
"Google") == 0) {
225 grpc_schedule_on_exec_ctx),
229 http_request->Start();
245 http_request.reset();
248 grpc_schedule_on_exec_ctx);
265 if (
it->second.type() != Json::Type::STRING ||
266 it->second.string_value().empty()) {
271 if (!
url.ok())
return false;
279 if (host ==
"sts" || host ==
"iamcredentials") {
295 bool ValidateExteralAccountCredentials(
const Json& json) {
296 return json.
type() == Json::Type::OBJECT &&
297 ValidateUrlField(json,
"token_url") &&
298 ValidateUrlField(json,
"service_account_impersonation_url") &&
299 ValidateUrlField(json,
"token_info_url");
314 if (creds_path.empty()) {
322 if (json.
type() != Json::Type::OBJECT) {
337 "grpc_service_account_jwt_access_credentials_create_from_auth_json_"
350 "grpc_refresh_token_credentials_create_from_auth_refresh_token "
357 if (!ValidateExteralAccountCredentials(json)) {
359 "Invalid external account credentials format.");
399 if (path_from_env !=
nullptr) {
422 "Failed to get credentials from network"));
454 grpc_core::MakeRefCounted<grpc_google_default_channel_credentials>(
struct grpc_pollset_worker grpc_pollset_worker
#define GRPC_CLOSURE_INIT(closure, cb, cb_arg, scheduler)
GRPCAPI void grpc_alts_credentials_options_destroy(grpc_alts_credentials_options *options)
char * grpc_channel_args_find_string(const grpc_channel_args *args, const char *name)
size_t grpc_pollset_size(void)
grpc_core::RefCountedPtr< grpc_channel_credentials > ssl_creds_
GPRAPI void gpr_mu_unlock(gpr_mu *mu)
grpc_pollset * grpc_polling_entity_pollset(grpc_polling_entity *pollent)
static grpc_core::internal::grpc_gce_tenancy_checker g_gce_tenancy_checker
grpc_channel_credentials * grpc_google_default_credentials_create(grpc_call_credentials *call_credentials)
void grpc_override_well_known_credentials_path_getter(grpc_well_known_credentials_path_getter getter)
grpc_error_handle grpc_load_file(const char *filename, int add_null_terminator, grpc_slice *output)
grpc_core::UniqueTypeName type() const override
void set_gce_tenancy_checker_for_testing(grpc_gce_tenancy_checker checker)
return memset(p, 0, total)
bool ConsumeSuffix(absl::string_view *str, absl::string_view expected)
static void on_metadata_server_detection_http_response(void *user_data, grpc_error_handle error)
bool StartsWith(absl::string_view text, absl::string_view prefix) noexcept
grpc_core::RefCountedPtr< grpc_call_credentials > grpc_refresh_token_credentials_create_from_auth_refresh_token(grpc_auth_refresh_token refresh_token)
absl::string_view StringViewFromSlice(const grpc_slice &slice)
GPRAPI void gpr_free(void *ptr)
bool grpc_alts_is_running_on_gcp()
const Object & object_value() const
grpc_channel_args * grpc_channel_args_copy_and_add_and_remove(const grpc_channel_args *src, const char **to_remove, size_t num_to_remove, const grpc_arg *to_add, size_t num_to_add)
bool SplitHostPort(absl::string_view name, absl::string_view *host, absl::string_view *port)
grpc_auth_refresh_token grpc_auth_refresh_token_create_from_json(const Json &json)
std::string grpc_get_well_known_google_credentials_file_path(void)
GRPCAPI grpc_call_credentials * grpc_google_compute_engine_credentials_create(void *reserved)
grpc_error_handle grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker **worker, grpc_core::Timestamp deadline)
static void update_tenancy()
#define GRPC_LOG_IF_ERROR(what, error)
static int is_metadata_server_reachable()
@ GRPC_ERROR_STR_RAW_BYTES
hex dump (or similar) with the data that generated this error
#define GRPC_CLOSURE_CREATE(cb, cb_arg, scheduler)
#define GRPC_GOOGLE_CREDENTIAL_CREATION_ERROR
static absl::StatusOr< URI > Parse(absl::string_view uri_text)
bool grpc_channel_args_find_bool(const grpc_channel_args *args, const char *name, bool default_value)
static grpc_well_known_credentials_path_getter creds_path_getter
void grpc_pollset_init(grpc_pollset *pollset, gpr_mu **mu)
GRPCAPI grpc_channel_credentials * grpc_ssl_credentials_create(const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair, const verify_peer_options *verify_options, void *reserved)
grpc_error_handle grpc_error_set_str(grpc_error_handle src, grpc_error_strs which, absl::string_view str)
GPRAPI void gpr_once_init(gpr_once *once, void(*init_function)(void))
static void init_default_credentials(void)
GPRAPI void * gpr_zalloc(size_t size)
static grpc_core::RefCountedPtr< grpc_call_credentials > make_default_call_creds(grpc_error_handle *error)
#define GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER
grpc_error_handle grpc_error_add_child(grpc_error_handle src, grpc_error_handle child)
std::string grpc_get_well_known_google_credentials_file_path_impl(void)
GRPCAPI grpc_alts_credentials_options * grpc_alts_credentials_client_options_create(void)
char * gpr_getenv(const char *name)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
#define GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER
int grpc_auth_json_key_is_valid(const grpc_auth_json_key *json_key)
def c_str(s, encoding='ascii')
JSON (JavaScript Object Notation).
GRPCAPI gpr_timespec grpc_max_auth_token_lifetime(void)
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
grpc_polling_entity grpc_polling_entity_create_from_pollset(grpc_pollset *pollset)
bool(* grpc_gce_tenancy_checker)(void)
void call_creds(grpc_end2end_test_config config)
struct absl::base_internal::@2940::AllocList::Header header
grpc_core::RefCountedPtr< grpc_call_credentials > grpc_service_account_jwt_access_credentials_create_from_auth_json_key(grpc_auth_json_key key, gpr_timespec token_lifetime)
GRPCAPI grpc_channel_credentials * grpc_insecure_credentials_create()
ABSL_NAMESPACE_BEGIN bool EqualsIgnoreCase(absl::string_view piece1, absl::string_view piece2) noexcept
grpc_core::ChannelArgs update_arguments(grpc_core::ChannelArgs args) override
GPRAPI grpc_slice grpc_empty_slice(void)
static grpc_error_handle create_default_creds_from_path(const std::string &creds_path, grpc_core::RefCountedPtr< grpc_call_credentials > *creds)
GPRAPI void gpr_mu_lock(gpr_mu *mu)
void grpc_http_response_destroy(grpc_http_response *response)
bool Parse(FlagOpFn op, absl::string_view text, void *dst, std::string *error)
GRPCAPI grpc_channel_credentials * grpc_composite_channel_credentials_create(grpc_channel_credentials *channel_creds, grpc_call_credentials *call_creds, void *reserved)
grpc_error_handle grpc_pollset_kick(grpc_pollset *pollset, grpc_pollset_worker *specific_worker)
static grpc_core::Mutex * g_state_mu
grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json &json)
#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc)
#define GRPC_ARG_DNS_ENABLE_SRV_QUERIES
#define GRPC_GOOGLE_CREDENTIALS_ENV_VAR
#define GRPC_COMPUTE_ENGINE_DETECTION_HOST
static gpr_mu * g_polling_mu
GRPCAPI grpc_channel_credentials * grpc_alts_credentials_create(const grpc_alts_credentials_options *options)
#define GPR_ARRAY_SIZE(array)
const FieldDescriptor * field
static OrphanablePtr< HttpRequest > Get(URI uri, const grpc_channel_args *args, grpc_polling_entity *pollent, const grpc_http_request *request, Timestamp deadline, grpc_closure *on_done, grpc_http_response *response, RefCountedPtr< grpc_channel_credentials > channel_creds) GRPC_MUST_USE_RESULT
grpc_core::RefCountedPtr< grpc_channel_security_connector > create_security_connector(grpc_core::RefCountedPtr< grpc_call_credentials > call_creds, const char *target, const grpc_channel_args *args, grpc_channel_args **new_args) override
static void destroy_pollset(void *p, grpc_error_handle)
grpc_core::ExecCtx exec_ctx
std::string grpc_error_std_string(grpc_error_handle error)
void grpc_pollset_shutdown(grpc_pollset *pollset, grpc_closure *closure)
static absl::StatusOr< URI > Create(std::string scheme, std::string authority, std::string path, std::vector< QueryParam > query_parameter_pairs, std::string fragment)
static constexpr Duration Seconds(int64_t seconds)
#define GRPC_ARG_XDS_CLUSTER_NAME
#define GRPC_ERROR_UNREF(err)
std::string(* grpc_well_known_credentials_path_getter)(void)
static int g_metadata_server_available
void grpc_flush_cached_google_default_credentials(void)
static constexpr Timestamp InfFuture()
grpc_core::RefCountedPtr< grpc_channel_credentials > alts_creds_
virtual grpc_core::RefCountedPtr< grpc_channel_security_connector > create_security_connector(grpc_core::RefCountedPtr< grpc_call_credentials > call_creds, const char *target, const grpc_channel_args *args, grpc_channel_args **new_args)=0
void grpc_pollset_destroy(grpc_pollset *pollset)
static RefCountedPtr< ExternalAccountCredentials > Create(const Json &json, std::vector< std::string > scopes, grpc_error_handle *error)
int grpc_auth_refresh_token_is_valid(const grpc_auth_refresh_token *refresh_token)
Returns 1 if the object is valid, 0 otherwise.
bool EndsWith(absl::string_view text, absl::string_view suffix) noexcept
static bool metadata_server_available()
#define GRPC_API_TRACE(fmt, nargs, args)
void grpc_slice_unref_internal(const grpc_slice &slice)
#define GRPC_ERROR_IS_NONE(err)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:39