Go to the documentation of this file.
27 #include "absl/strings/str_join.h"
67 std::vector<std::unique_ptr<
71 std::shared_ptr<Channel>
75 std::unique_ptr<grpc::experimental::ClientInterceptorFactoryInterface>>
76 interceptor_creators) {
78 args.SetChannelArgs(&channel_args);
80 args.GetSslTargetNameOverride(),
98 return creds ==
nullptr ? nullptr
99 : std::shared_ptr<ChannelCredentials>(
107 std::shared_ptr<CallCredentials> WrapCallCredentials(
109 return creds ==
nullptr ? nullptr
110 : std::shared_ptr<CallCredentials>(
111 new SecureCallCredentials(creds));
122 const grpc::string& json_string,
const std::vector<grpc::string>& scopes) {
136 options.pem_root_certs.empty() ?
nullptr :
options.pem_root_certs.c_str(),
137 options.pem_private_key.empty() ?
nullptr : &pem_key_cert_pair,
nullptr,
142 namespace experimental {
146 void ClearStsCredentialsOptions(StsCredentialsOptions*
options) {
147 if (
options ==
nullptr)
return;
148 options->token_exchange_service_uri.clear();
152 options->requested_token_type.clear();
153 options->subject_token_path.clear();
154 options->subject_token_type.clear();
155 options->actor_token_path.clear();
156 options->actor_token_type.clear();
166 "options cannot be nullptr.");
168 ClearStsCredentialsOptions(
options);
179 json,
"token_exchange_service_uri",
nullptr);
180 if (
value ==
nullptr) {
181 ClearStsCredentialsOptions(
options);
183 "token_exchange_service_uri must be specified.");
187 if (
value ==
nullptr) {
188 ClearStsCredentialsOptions(
options);
190 "subject_token_path must be specified.");
194 if (
value ==
nullptr) {
195 ClearStsCredentialsOptions(
options);
197 "subject_token_type must be specified.");
222 "options cannot be nullptr.");
224 ClearStsCredentialsOptions(
options);
226 char* sts_creds_path =
gpr_getenv(
"STS_CREDENTIALS");
237 if (sts_creds_path ==
nullptr) {
239 "STS_CREDENTIALS environment variable not set.");
259 opts.token_exchange_service_uri =
options.token_exchange_service_uri.c_str();
263 opts.requested_token_type =
options.requested_token_type.c_str();
264 opts.subject_token_path =
options.subject_token_path.c_str();
265 opts.subject_token_type =
options.subject_token_type.c_str();
266 opts.actor_token_path =
options.actor_token_path.c_str();
267 opts.actor_token_type =
options.actor_token_type.c_str();
279 std::unique_ptr<MetadataCredentialsPlugin> plugin,
282 const char*
type = plugin->GetType();
290 c_plugin, min_security_level,
nullptr));
299 for (
const auto& service_account :
options.target_service_accounts) {
301 c_options, service_account.c_str());
327 return WrapCallCredentials(
333 const std::string& json_key,
long token_lifetime_seconds) {
335 if (token_lifetime_seconds <= 0) {
337 "Trying to create JWTCredentials with non-positive lifetime");
338 return WrapCallCredentials(
nullptr);
343 json_key.c_str(), lifetime,
nullptr));
351 json_refresh_token.c_str(),
nullptr));
358 return WrapCallCredentials(
368 authorization_token.c_str(), authority_selector.c_str(),
nullptr));
374 const std::shared_ptr<ChannelCredentials>& channel_creds,
375 const std::shared_ptr<CallCredentials>&
call_creds) {
383 if (s_channel_creds && s_call_creds) {
393 const std::shared_ptr<CallCredentials>& creds1,
394 const std::shared_ptr<CallCredentials>& creds2) {
397 if (s_creds1 !=
nullptr && s_creds2 !=
nullptr) {
405 std::unique_ptr<MetadataCredentialsPlugin> plugin) {
407 const char*
type = plugin->GetType();
420 MetadataCredentialsPluginWrapper* w =
421 static_cast<MetadataCredentialsPluginWrapper*
>(
wrapper);
434 if (
wrapper ==
nullptr)
return;
446 const char** error_details) {
453 *error_details =
nullptr;
456 if (w->
plugin_->IsBlocking()) {
463 w->MetadataCredentialsPluginWrapper::InvokePlugin(
464 context_copy,
cb, user_data,
nullptr,
nullptr,
nullptr,
nullptr);
478 void UnrefMetadata(
const std::vector<grpc_metadata>&
md) {
479 for (
const auto& metadatum :
md) {
489 void* user_data,
grpc_metadata creds_md[4],
size_t* num_creds_md,
491 std::multimap<std::string, std::string>
metadata;
499 cpp_channel_auth_context, &
metadata);
500 std::vector<grpc_metadata>
md;
505 md.push_back(md_entry);
507 if (creds_md !=
nullptr) {
513 "blocking plugin credentials returned too many metadata keys");
516 for (
const auto&
elem :
md) {
517 creds_md[*num_creds_md].
key =
elem.key;
518 creds_md[*num_creds_md].
value =
elem.value;
527 cb(user_data,
md.empty() ?
nullptr : &
md[0],
md.size(),
529 status.error_message().c_str());
535 std::unique_ptr<MetadataCredentialsPlugin> plugin)
GPRAPI void grpc_slice_unref(grpc_slice s)
std::shared_ptr< Channel > CreateChannelInternal(const std::string &host, grpc_channel *c_channel, std::vector< std::unique_ptr< experimental::ClientInterceptorFactoryInterface >> interceptor_creators)
GRPCAPI void grpc_alts_credentials_options_destroy(grpc_alts_credentials_options *options)
grpc::Status StsCredentialsOptionsFromJson(const std::string &json_string, StsCredentialsOptions *options)
#define GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX
void(* grpc_credentials_plugin_metadata_cb)(void *user_data, const grpc_metadata *creds_md, size_t num_creds_md, grpc_status_code status, const char *error_details)
grpc_channel_credentials * GetRawCreds()
SecureCallCredentials(grpc_call_credentials *c_creds)
grpc_error_handle grpc_load_file(const char *filename, int add_null_terminator, grpc_slice *output)
std::shared_ptr< CallCredentials > MetadataCredentialsFromPlugin(std::unique_ptr< MetadataCredentialsPlugin > plugin, grpc_security_level min_security_level)
gpr_free(creds_file_name)
return memset(p, 0, total)
std::shared_ptr< ChannelCredentials > SslCredentials(const SslCredentialsOptions &options)
Builds SSL Credentials given SSL specific options.
std::shared_ptr< Channel > CreateChannelWithInterceptors(const std::string &target, const ChannelArguments &args, std::vector< std::unique_ptr< grpc::experimental::ClientInterceptorFactoryInterface >> interceptor_creators) override
static grpc::internal::GrpcLibraryInitializer g_gli_initializer
GRPCAPI grpc_call_credentials * grpc_google_iam_credentials_create(const char *authorization_token, const char *authority_selector, void *reserved)
grpc::Status StsCredentialsOptionsFromEnv(StsCredentialsOptions *options)
grpc_slice SliceFromCopiedString(const std::string &str)
std::shared_ptr< ChannelCredentials > CompositeChannelCredentials(const std::shared_ptr< ChannelCredentials > &channel_creds, const std::shared_ptr< CallCredentials > &call_creds)
GRPCAPI grpc_call_credentials * grpc_metadata_credentials_create_from_plugin(grpc_metadata_credentials_plugin plugin, grpc_security_level min_security_level, void *reserved)
SecureCallCredentials * AsSecureCredentials() override
GRPCAPI grpc_call_credentials * grpc_google_compute_engine_credentials_create(void *reserved)
const char * grpc_json_get_string_property(const grpc_core::Json &json, const char *prop_name, grpc_error_handle *error)
grpc_channel_credentials * grpc_tls_credentials_create(grpc_tls_credentials_options *options)
std::shared_ptr< ChannelCredentials > GoogleDefaultCredentials()
GRPCAPI grpc_call_credentials * grpc_composite_call_credentials_create(grpc_call_credentials *creds1, grpc_call_credentials *creds2, void *reserved)
#define GRPC_CLOSURE_CREATE(cb, cb_arg, scheduler)
GRPCAPI void grpc_auth_metadata_context_reset(grpc_auth_metadata_context *context)
Classes that require gRPC to be initialized should inherit from this class.
std::shared_ptr< CallCredentials > ExternalAccountCredentials(const grpc::string &json_string, const std::vector< grpc::string > &scopes)
static void Run(grpc_closure *closure, grpc_error_handle error, ExecutorType executor_type=ExecutorType::DEFAULT, ExecutorJobType job_type=ExecutorJobType::SHORT)
GRPCAPI grpc_call_credentials * grpc_access_token_credentials_create(const char *access_token, void *reserved)
grpc_channel_credentials *const c_creds_
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)
std::shared_ptr< Channel > CreateChannelImpl(const std::string &target, const ChannelArguments &args) override
std::shared_ptr< CallCredentials > ServiceAccountJWTAccessCredentials(const grpc::string &json_key, long token_lifetime_seconds=kMaxAuthTokenLifetimeSecs)
GRPCAPI grpc_call_credentials * grpc_service_account_jwt_access_credentials_create(const char *json_key, gpr_timespec token_lifetime, void *reserved)
Instantiating this class ensures the proper initialization of gRPC.
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
std::string StrJoin(Iterator start, Iterator end, absl::string_view sep, Formatter &&fmt)
GRPCAPI grpc_call_credentials * grpc_sts_credentials_create(const grpc_sts_credentials_options *options, void *reserved)
Options used to build SslCredentials.
std::shared_ptr< ChannelCredentials > LocalCredentials(grpc_local_connect_type type)
Builds Local Credentials.
GRPCAPI grpc_call_credentials * grpc_external_account_credentials_create(const char *json_string, const char *scopes_string)
grpc_call_credentials *const c_creds_
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
GRPCAPI void grpc_alts_credentials_client_options_add_target_service_account(grpc_alts_credentials_options *options, const char *service_account)
struct grpc_call grpc_call
grpc_sts_credentials_options StsCredentialsCppToCoreOptions(const StsCredentialsOptions &options)
void call_creds(grpc_end2end_test_config config)
#define GRPC_SLICE_START_PTR(slice)
GPRAPI grpc_slice grpc_empty_slice(void)
GRPCAPI grpc_channel_credentials * grpc_composite_channel_credentials_create(grpc_channel_credentials *channel_creds, grpc_call_credentials *call_creds, void *reserved)
grpc_channel_wrapper * wrapper
SecureChannelCredentials * AsSecureCredentials() override
std::shared_ptr< CallCredentials > CompositeCallCredentials(const std::shared_ptr< CallCredentials > &creds1, const std::shared_ptr< CallCredentials > &creds2)
Combines two call credentials objects into a composite call credentials.
static Json Parse(absl::string_view json_str, grpc_error_handle *error)
bool ApplyToCall(grpc_call *call) override
Apply this instance's credentials to call.
GRPCAPI grpc_call_error grpc_call_set_credentials(grpc_call *call, grpc_call_credentials *creds)
grpc_call_credentials * GetRawCreds()
ThreadPoolInterface * CreateDefaultThreadPool()
GRPCAPI grpc_channel_credentials * grpc_alts_credentials_create(const grpc_alts_credentials_options *options)
GRPCAPI grpc_channel * grpc_channel_create(const char *target, grpc_channel_credentials *creds, const grpc_channel_args *args)
std::shared_ptr< CallCredentials > GoogleRefreshTokenCredentials(const grpc::string &json_refresh_token)
GRPCAPI grpc_call_credentials * grpc_google_refresh_token_credentials_create(const char *json_refresh_token, void *reserved)
std::shared_ptr< ChannelCredentials > TlsCredentials(const TlsChannelCredentialsOptions &options)
Builds TLS Credentials given TLS options.
grpc_core::ExecCtx exec_ctx
std::string grpc_error_std_string(grpc_error_handle error)
GRPC_CUSTOM_UTIL_STATUS Status
std::shared_ptr< CallCredentials > StsCredentials(const StsCredentialsOptions &options)
@ GRPC_PRIVACY_AND_INTEGRITY
#define GRPC_ERROR_UNREF(err)
GRPCAPI void grpc_auth_metadata_context_copy(grpc_auth_metadata_context *from, grpc_auth_metadata_context *to)
GPRAPI char * gpr_strdup(const char *src)
grpc::ClientContext context
std::shared_ptr< ChannelCredentials > AltsCredentials(const AltsCredentialsOptions &options)
Builds ALTS Credentials given ALTS specific options.
GRPCAPI grpc_channel_credentials * grpc_google_default_credentials_create(grpc_call_credentials *call_credentials)
std::shared_ptr< CallCredentials > AccessTokenCredentials(const grpc::string &access_token)
std::shared_ptr< ChannelCredentials > WrapChannelCredentials(grpc_channel_credentials *creds)
Options used to build AltsCredentials.
std::shared_ptr< CallCredentials > MetadataCredentialsFromPlugin(std::unique_ptr< MetadataCredentialsPlugin > plugin)
std::shared_ptr< CallCredentials > GoogleComputeEngineCredentials()
SecureChannelCredentials(grpc_channel_credentials *c_creds)
GRPCAPI grpc_channel_credentials * grpc_local_credentials_create(grpc_local_connect_type type)
OPENSSL_EXPORT pem_password_cb * cb
void grpc_slice_unref_internal(const grpc_slice &slice)
GPRAPI gpr_timespec gpr_time_from_seconds(int64_t s, gpr_clock_type clock_type)
std::shared_ptr< CallCredentials > GoogleIAMCredentials(const grpc::string &authorization_token, const grpc::string &authority_selector)
#define GRPC_ERROR_IS_NONE(err)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:15