Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/authprovider/authx/headers_auth.go
2843 views
1
package authx
2
3
import (
4
"net/http"
5
6
"github.com/projectdiscovery/retryablehttp-go"
7
)
8
9
var (
10
_ AuthStrategy = &HeadersAuthStrategy{}
11
)
12
13
// HeadersAuthStrategy is a strategy for headers auth
14
type HeadersAuthStrategy struct {
15
Data *Secret
16
}
17
18
// NewHeadersAuthStrategy creates a new headers auth strategy
19
func NewHeadersAuthStrategy(data *Secret) *HeadersAuthStrategy {
20
return &HeadersAuthStrategy{Data: data}
21
}
22
23
// Apply applies the headers auth strategy to the request
24
// NOTE: This preserves exact header casing (e.g., barAuthToken stays as barAuthToken)
25
// This is useful for APIs that require case-sensitive header names
26
func (s *HeadersAuthStrategy) Apply(req *http.Request) {
27
for _, header := range s.Data.Headers {
28
req.Header[header.Key] = []string{header.Value}
29
}
30
}
31
32
// ApplyOnRR applies the headers auth strategy to the retryable request
33
// NOTE: This preserves exact header casing (e.g., barAuthToken stays as barAuthToken)
34
// This is useful for APIs that require case-sensitive header names
35
func (s *HeadersAuthStrategy) ApplyOnRR(req *retryablehttp.Request) {
36
for _, header := range s.Data.Headers {
37
req.Header[header.Key] = []string{header.Value}
38
}
39
}
40
41