Skip to content

Commit 6d655d3

Browse files
authored
Merge v1.2.0 to main
2 parents 17301f6 + 21bc556 commit 6d655d3

File tree

6 files changed

+96
-26
lines changed

6 files changed

+96
-26
lines changed

.github/workflows/go_tests.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ jobs:
1010
runs-on: kf-auth-client-runner-set
1111
strategy:
1212
matrix:
13-
environment: [ "KFC_10_5_0", "KFC_12_3_0_KC"]
13+
environment:
14+
# - "KFC_10_5_0"
15+
- "KFC_12_3_0_KC"
1416
environment: ${{ matrix.environment }}
1517
steps:
1618
- name: Check out code

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
# v1.2.0
2+
3+
## Features
4+
- Add logging of the authentication test request as a `curl` string. ([7be00ce](https://github.com/Keyfactor/keyfactor-auth-client-go/commit/7be00ce82b6dd7880449e6585590ec702992a388))
5+
6+
## Bug fixes
7+
- Ensure `CommandAPIPath` is always trimmed of any leading or trailing `/`. ([45023c9](https://github.com/Keyfactor/keyfactor-auth-client-go/commit/45023c94e9be0ae9b307f38af972bbc0b40998d4))
8+
- `oauth` set `DefaultScopes` to empty slice of string rather than `openid`. ([b35d18a](https://github.com/Keyfactor/keyfactor-auth-client-go/commit/b35d18a19430692e65e98623fbfd7300f449bec8))
9+
10+
## Chores
11+
- Bump Go version to `1.23`. ([9e62e2a](https://github.com/Keyfactor/keyfactor-auth-client-go/commit/9e62e2ab3a5c8ea0883df5a5902eaa91f2776f23))
12+
113
# v1.1.1
214

315
## Bug fixes

auth_providers/auth_core.go

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@
1515
package auth_providers
1616

1717
import (
18+
"bytes"
1819
"crypto/tls"
1920
"crypto/x509"
2021
"encoding/json"
2122
"encoding/pem"
2223
"fmt"
2324
"io"
25+
"log"
2426
"net/http"
2527
"os"
2628
"path/filepath"
@@ -54,6 +56,9 @@ const (
5456
// DefaultClientTimeout is the default timeout for the http Client
5557
DefaultClientTimeout = 60
5658

59+
//Default HTTP protocol
60+
DefaultHttpProtocol = "https"
61+
5762
// EnvKeyfactorHostName is the environment variable for the Keyfactor Command hostname
5863
EnvKeyfactorHostName = "KEYFACTOR_HOSTNAME"
5964

@@ -139,6 +144,9 @@ type CommandAuthConfig struct {
139144
// Debug
140145
Debug bool `json:"debug,omitempty" yaml:"debug,omitempty"`
141146

147+
// HTTPProtocol
148+
HttpProtocol string `json:"http_protocol,omitempty" yaml:"http_protocol,omitempty"`
149+
142150
// HttpClient is the http Client to be used for authentication to Keyfactor Command API
143151
HttpClient *http.Client
144152
//DefaultHttpClient *http.Client
@@ -159,6 +167,12 @@ func cleanHostName(hostName string) string {
159167

160168
// WithCommandHostName sets the hostname for authentication to Keyfactor Command API.
161169
func (c *CommandAuthConfig) WithCommandHostName(hostName string) *CommandAuthConfig {
170+
171+
//check for http or https prefix
172+
if strings.Contains(hostName, "http://") {
173+
c.HttpProtocol = "http"
174+
}
175+
162176
hostName = cleanHostName(hostName)
163177
c.CommandHostName = hostName
164178
return c
@@ -261,6 +275,7 @@ func (c *CommandAuthConfig) ValidateAuthConfig() error {
261275
c.CommandAPIPath = DefaultCommandAPIPath
262276
}
263277
}
278+
c.CommandAPIPath = strings.Trim(c.CommandAPIPath, "/")
264279
if c.HttpClientTimeout <= 0 {
265280
if timeout, ok := os.LookupEnv(EnvKeyfactorClientTimeout); ok {
266281
configTimeout, tErr := strconv.Atoi(timeout)
@@ -449,6 +464,10 @@ func (c *CommandAuthConfig) Authenticate() error {
449464
if c.HttpClient == nil {
450465
c.SetClient(nil)
451466
}
467+
468+
if c.HttpProtocol == "" {
469+
c.HttpProtocol = DefaultHttpProtocol
470+
}
452471
//create headers for request
453472
headers := map[string]string{
454473
"Content-Type": "application/json",
@@ -462,11 +481,13 @@ func (c *CommandAuthConfig) Authenticate() error {
462481
}
463482

464483
endPoint := fmt.Sprintf(
465-
"https://%s/%s/Status/Endpoints",
484+
"%s://%s/%s/Status/Endpoints",
485+
c.HttpProtocol,
466486
c.CommandHostName,
467487
//c.CommandPort,
468488
c.CommandAPIPath,
469489
)
490+
log.Printf("[DEBUG] testing auth using endpoint %s ", endPoint)
470491

471492
// create request object
472493
req, rErr := http.NewRequest("GET", endPoint, nil)
@@ -480,6 +501,11 @@ func (c *CommandAuthConfig) Authenticate() error {
480501
}
481502

482503
c.HttpClient.Timeout = time.Duration(c.HttpClientTimeout) * time.Second
504+
curlStr, cErr := RequestToCurl(req)
505+
if cErr == nil {
506+
log.Printf("[TRACE] curl command: %s", curlStr)
507+
}
508+
483509
cResp, cErr := c.HttpClient.Do(req)
484510
if cErr != nil {
485511
return cErr
@@ -759,3 +785,33 @@ type contextKey string
759785
// fmt.Println("Authentication successful")
760786
// }
761787
// }
788+
789+
func RequestToCurl(req *http.Request) (string, error) {
790+
var curlCommand strings.Builder
791+
792+
// Start with the cURL command
793+
curlCommand.WriteString(fmt.Sprintf("curl -X %s ", req.Method))
794+
795+
// Add the URL
796+
curlCommand.WriteString(fmt.Sprintf("%q ", req.URL.String()))
797+
798+
// Add headers
799+
for name, values := range req.Header {
800+
for _, value := range values {
801+
curlCommand.WriteString(fmt.Sprintf("-H %q ", fmt.Sprintf("%s: %s", name, value)))
802+
}
803+
}
804+
805+
// Add the body if it exists
806+
if req.Method == http.MethodPost || req.Method == http.MethodPut {
807+
body, err := io.ReadAll(req.Body)
808+
if err != nil {
809+
return "", err
810+
}
811+
req.Body = io.NopCloser(bytes.NewBuffer(body)) // Restore the request body
812+
813+
curlCommand.WriteString(fmt.Sprintf("--data %q ", string(body)))
814+
}
815+
816+
return curlCommand.String(), nil
817+
}

auth_providers/auth_oauth.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ const (
5959

6060
var (
6161
// DefaultScopes is the default scopes for Keyfactor authentication
62-
DefaultScopes = []string{"openid"}
62+
DefaultScopes []string
6363
)
6464

6565
// OAuth Authenticator

go.mod

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@
1414

1515
module github.com/Keyfactor/keyfactor-auth-client-go
1616

17-
go 1.22
17+
go 1.23
1818

1919
require (
20-
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0
20+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1
2121
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.0
2222
github.com/stretchr/testify v1.10.0
23-
golang.org/x/oauth2 v0.24.0
23+
golang.org/x/oauth2 v0.25.0
2424
gopkg.in/yaml.v2 v2.4.0
2525
)
2626

2727
require (
28-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0 // indirect
28+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 // indirect
2929
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
3030
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.0 // indirect
3131
github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 // indirect
@@ -35,9 +35,9 @@ require (
3535
github.com/kylelemons/godebug v1.1.0 // indirect
3636
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
3737
github.com/pmezard/go-difflib v1.0.0 // indirect
38-
golang.org/x/crypto v0.30.0 // indirect
39-
golang.org/x/net v0.32.0 // indirect
40-
golang.org/x/sys v0.28.0 // indirect
38+
golang.org/x/crypto v0.32.0 // indirect
39+
golang.org/x/net v0.34.0 // indirect
40+
golang.org/x/sys v0.29.0 // indirect
4141
golang.org/x/text v0.21.0 // indirect
4242
gopkg.in/yaml.v3 v3.0.1 // indirect
4343
)

go.sum

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0 h1:JZg6HRh6W6U4OLl6lk7BZ7BLisIzM9dG1R50zUk9C/M=
2-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0/go.mod h1:YL1xnZ6QejvQHWJrX/AvhFl4WW4rqHVoKspWNVwFk0M=
3-
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 h1:B/dfvscEQtew9dVuoxqxrUKKv8Ih2f55PydknDamU+g=
4-
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0/go.mod h1:fiPSssYvltE08HJchL04dOy+RD4hgrjph0cwGGMntdI=
5-
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.0 h1:+m0M/LFxN43KvULkDNfdXOgrjtg6UYJPFBJyuEcRCAw=
6-
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.0/go.mod h1:PwOyop78lveYMRs6oCxjiVyBdyCgIYH6XHIVZO9/SFQ=
1+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 h1:g0EZJwz7xkXQiZAI5xi9f3WWFYBlX1CPTrR+NDToRkQ=
2+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0/go.mod h1:XCW7KnZet0Opnr7HccfUw1PLc4CjHqpcaxW8DHklNkQ=
3+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1 h1:1mvYtZfWQAnwNah/C+Z+Jb9rQH95LPE2vlmMuWAHJk8=
4+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1/go.mod h1:75I/mXtme1JyWFtz8GocPHVFyH421IBoZErnO16dd0k=
5+
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1 h1:Bk5uOhSAenHyR5P61D/NzeQCv+4fEVV8mOkJ82NqpWw=
6+
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1/go.mod h1:QZ4pw3or1WPmRBxf0cHd1tknzrT54WPBOQoGutCPvSU=
77
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY=
88
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY=
99
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.3.0 h1:WLUIpeyv04H0RCcQHaA4TNoyrQ39Ox7V+re+iaqzTe0=
@@ -38,21 +38,21 @@ github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmd
3838
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
3939
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
4040
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
41-
github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4=
42-
github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA=
41+
github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E=
42+
github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw=
4343
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
4444
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
4545
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
4646
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
47-
golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY=
48-
golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
49-
golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
50-
golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
51-
golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
52-
golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
47+
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
48+
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
49+
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
50+
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
51+
golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
52+
golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
5353
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
54-
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
55-
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
54+
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
55+
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
5656
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
5757
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
5858
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

0 commit comments

Comments
 (0)