private async Task ReadCredentialMetadata(HttpClient client, HttpRequestMessage message, CallCredentials credentials) { var configurator = new CallCredentialsConfigurator(); credentials.InternalPopulateConfiguration(configurator, null); if (configurator.Interceptor != null) { var authInterceptorContext = new AuthInterceptorContext(client.BaseAddress.OriginalString, Method.FullName); var metadata = new Metadata(); await configurator.Interceptor(authInterceptorContext, metadata).ConfigureAwait(false); foreach (var entry in metadata) { AddHeader(message.Headers, entry); } } if (configurator.Credentials != null) { foreach (var c in configurator.Credentials) { await ReadCredentialMetadata(client, message, c).ConfigureAwait(false); } } }
/// <summary> /// Creates native object for the credentials. /// </summary> /// <returns>The native credentials.</returns> public static CallCredentialsSafeHandle ToNativeCredentials(this CallCredentials credentials) { var configurator = new DefaultCallCredentialsConfigurator(); credentials.InternalPopulateConfiguration(configurator, credentials); return(configurator.NativeCredentials); }
/// <summary> /// Returns the async auth interceptor derived from the given channel credentials, or null /// if the channel credentials don't involve an interceptor. /// </summary> /// <param name="credentials">The channel credentials to convert.</param> internal static AsyncAuthInterceptor ToAsyncAuthInterceptor(this CallCredentials credentials) { var configurator = new RestCallCredentialsConfigurator(); credentials.InternalPopulateConfiguration(configurator, null); return(configurator.Interceptor); }