@@ -97,15 +97,19 @@ type UAMetadata struct {
97
97
}
98
98
99
99
func (c * Config ) NewClient (ctx context.Context ) (any , error ) {
100
- // Network Logging transport is before Digest transport so it can log the first Digest requests with 401 Unauthorized.
101
- // Terraform logging transport is after Digest transport so the Unauthorized request bodies are not logged.
100
+ // Transport chain (outermost to innermost):
101
+ // userAgentTransport -> tfLoggingTransport -> digestTransport -> networkLoggingTransport -> baseTransport
102
+ //
103
+ // This ordering ensures:
104
+ // 1. networkLoggingTransport logs ALL requests including digest auth 401 challenges
105
+ // 2. tfLoggingTransport only logs final authenticated requests (not sensitive auth details)
106
+ // 3. userAgentTransport modifies User-Agent before tfLoggingTransport logs it
102
107
networkLoggingTransport := NewTransportWithNetworkLogging (baseTransport , logging .IsDebugOrHigher ())
103
108
digestTransport := digest .NewTransportWithHTTPRoundTripper (cast .ToString (c .PublicKey ), cast .ToString (c .PrivateKey ), networkLoggingTransport )
104
109
// Don't change logging.NewTransport to NewSubsystemLoggingHTTPTransport until all resources are in TPF.
105
110
tfLoggingTransport := logging .NewTransport ("Atlas" , digestTransport )
106
- // Add tf-src header to User-Agent, see wrapper_provider_server.go
107
- // Must be before tfLoggingTransport otherwise the "final" userAgent will not be logged
108
- userAgentTransport := TFSrcUserAgentAdder {
111
+ // Add UserAgentExtra fields to the User-Agent header, see wrapper_provider_server.go
112
+ userAgentTransport := UserAgentTransport {
109
113
Transport : tfLoggingTransport ,
110
114
}
111
115
client := & http.Client {Transport : & userAgentTransport }
0 commit comments