@@ -402,7 +402,8 @@ WinHttpSyncHttpClient::WinHttpSyncHttpClient(const ClientConfiguration& config)
402402 Base(),
403403 m_usingProxy(!config.proxyHost.empty()),
404404 m_verifySSL(config.verifySSL),
405- m_version(config.version)
405+ m_version(config.version),
406+ m_useAnonymousAuth(config.winHTTPOptions.useAnonymousAuth)
406407{
407408 m_enableHttpClientTrace = config.enableHttpClientTrace ;
408409
@@ -533,7 +534,10 @@ void* WinHttpSyncHttpClient::OpenRequest(const std::shared_ptr<HttpRequest>& req
533534{
534535 LPCWSTR accept[2 ] = { nullptr , nullptr };
535536
536- DWORD requestFlags = request->GetUri ().GetScheme () == Scheme::HTTPS && m_verifySSL ? WINHTTP_FLAG_SECURE : 0 ;
537+ DWORD requestFlags{0 };
538+ if (request->GetUri ().GetScheme () == Scheme::HTTPS) {
539+ requestFlags |= WINHTTP_FLAG_SECURE;
540+ }
537541 if (m_usingProxy) {
538542 // Avoid force adding "Cache-Control: no-cache" header.
539543 requestFlags |= WINHTTP_FLAG_REFRESH;
@@ -569,11 +573,22 @@ void* WinHttpSyncHttpClient::OpenRequest(const std::shared_ptr<HttpRequest>& req
569573
570574 if (!m_verifySSL) // Turning ssl unknown ca verification off
571575 {
572- DWORD flags = SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_CERT_CN_INVALID;
576+ DWORD flags = SECURITY_FLAG_IGNORE_UNKNOWN_CA |
577+ SECURITY_FLAG_IGNORE_CERT_CN_INVALID |
578+ SECURITY_FLAG_IGNORE_CERT_DATE_INVALID |
579+ SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE;
573580 if (!AzCallWinHttp (" WinHttpSetOption" , WinHttpSetOption, hHttpRequest, WINHTTP_OPTION_SECURITY_FLAGS, &flags, (DWORD) sizeof (flags)))
574581 {
575582 AWS_LOGSTREAM_FATAL (GetLogTag (), " Failed to turn ssl cert ca verification off." );
576583 }
584+
585+ if (m_useAnonymousAuth)
586+ {
587+ if (!WinHttpSetOption (hHttpRequest, WINHTTP_OPTION_CLIENT_CERT_CONTEXT, WINHTTP_NO_CLIENT_CERT_CONTEXT, 0 ))
588+ {
589+ AWS_LOGSTREAM_FATAL (GetLogTag (), " Failed to set anonymous auth on." );
590+ }
591+ }
577592 }
578593
579594 if (!GetConnectionPoolManager ()->GetEnableTcpKeepAlive ())
0 commit comments