...
1
2
3
4
5 package stsexchange
6
7 import (
8 "encoding/base64"
9 "net/http"
10 "net/url"
11
12 "golang.org/x/oauth2"
13 )
14
15
16 type ClientAuthentication struct {
17
18 AuthStyle oauth2.AuthStyle
19 ClientID string
20 ClientSecret string
21 }
22
23
24
25
26 func (c *ClientAuthentication) InjectAuthentication(values url.Values, headers http.Header) {
27 if c.ClientID == "" || c.ClientSecret == "" || values == nil || headers == nil {
28 return
29 }
30
31 switch c.AuthStyle {
32 case oauth2.AuthStyleInHeader:
33 plainHeader := c.ClientID + ":" + c.ClientSecret
34 headers.Add("Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(plainHeader)))
35 case oauth2.AuthStyleInParams:
36 values.Set("client_id", c.ClientID)
37 values.Set("client_secret", c.ClientSecret)
38 case oauth2.AuthStyleAutoDetect:
39 values.Set("client_id", c.ClientID)
40 values.Set("client_secret", c.ClientSecret)
41 default:
42 values.Set("client_id", c.ClientID)
43 values.Set("client_secret", c.ClientSecret)
44 }
45 }
46
View as plain text