build(deps): bump the go-deps group with 10 updates

Bumps the go-deps group with 10 updates:

| Package | From | To |
| --- | --- | --- |
| [cloud.google.com/go/compute](https://github.com/googleapis/google-cloud-go) | `1.23.3` | `1.23.4` |
| [cloud.google.com/go/storage](https://github.com/googleapis/google-cloud-go) | `1.36.0` | `1.37.0` |
| [github.com/Azure/azure-sdk-for-go/sdk/azidentity](https://github.com/Azure/azure-sdk-for-go) | `1.4.0` | `1.5.1` |
| [github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5](https://github.com/Azure/azure-sdk-for-go) | `5.3.0` | `5.5.0` |
| [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) | `1.50.0` | `1.50.8` |
| [github.com/google/uuid](https://github.com/google/uuid) | `1.5.0` | `1.6.0` |
| [github.com/jackc/pgtype](https://github.com/jackc/pgtype) | `1.14.0` | `1.14.1` |
| [github.com/openshift-online/ocm-sdk-go](https://github.com/openshift-online/ocm-sdk-go) | `0.1.390` | `0.1.398` |
| [github.com/osbuild/images](https://github.com/osbuild/images) | `0.33.0` | `0.34.0` |
| [google.golang.org/api](https://github.com/googleapis/google-api-go-client) | `0.160.0` | `0.161.0` |


Updates `cloud.google.com/go/compute` from 1.23.3 to 1.23.4
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/documentai/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/compute/v1.23.3...compute/v1.23.4)

Updates `cloud.google.com/go/storage` from 1.36.0 to 1.37.0
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/pubsub/v1.36.0...spanner/v1.37.0)

Updates `github.com/Azure/azure-sdk-for-go/sdk/azidentity` from 1.4.0 to 1.5.1
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.4.0...sdk/internal/v1.5.1)

Updates `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5` from 5.3.0 to 5.5.0
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/resourcemanager/compute/armcompute/v5.3.0...sdk/resourcemanager/compute/armcompute/v5.5.0)

Updates `github.com/aws/aws-sdk-go` from 1.50.0 to 1.50.8
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.50.0...v1.50.8)

Updates `github.com/google/uuid` from 1.5.0 to 1.6.0
- [Release notes](https://github.com/google/uuid/releases)
- [Changelog](https://github.com/google/uuid/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/uuid/compare/v1.5.0...v1.6.0)

Updates `github.com/jackc/pgtype` from 1.14.0 to 1.14.1
- [Changelog](https://github.com/jackc/pgtype/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jackc/pgtype/compare/v1.14.0...v1.14.1)

Updates `github.com/openshift-online/ocm-sdk-go` from 0.1.390 to 0.1.398
- [Release notes](https://github.com/openshift-online/ocm-sdk-go/releases)
- [Changelog](https://github.com/openshift-online/ocm-sdk-go/blob/main/CHANGES.md)
- [Commits](https://github.com/openshift-online/ocm-sdk-go/compare/v0.1.390...v0.1.398)

Updates `github.com/osbuild/images` from 0.33.0 to 0.34.0
- [Release notes](https://github.com/osbuild/images/releases)
- [Commits](https://github.com/osbuild/images/compare/v0.33.0...v0.34.0)

Updates `google.golang.org/api` from 0.160.0 to 0.161.0
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.160.0...v0.161.0)

---
updated-dependencies:
- dependency-name: cloud.google.com/go/compute
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-deps
- dependency-name: cloud.google.com/go/storage
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/azidentity
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: github.com/aws/aws-sdk-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-deps
- dependency-name: github.com/google/uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: github.com/jackc/pgtype
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-deps
- dependency-name: github.com/openshift-online/ocm-sdk-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-deps
- dependency-name: github.com/osbuild/images
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: google.golang.org/api
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
dependabot[bot] 2024-02-01 04:42:59 +00:00 committed by Tomáš Hozza
parent db0e6c9643
commit b461b1faf3
306 changed files with 80393 additions and 56486 deletions

View file

@ -0,0 +1,123 @@
package authentication
import (
"context"
"crypto/tls"
"fmt"
"io"
"log"
"net/http"
"net/url"
"sync"
"time"
"github.com/skratchdot/open-golang/open"
"golang.org/x/oauth2"
)
var (
conf *oauth2.Config
ctx context.Context
verifier string
authToken string
)
const (
RedirectURL = "http://127.0.0.1"
RedirectPort = "9998"
DefaultAuthURL = "https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/auth"
CallbackHandler = "/oauth/callback"
)
func callbackHandler(w http.ResponseWriter, r *http.Request) {
queryParts, _ := url.ParseQuery(r.URL.RawQuery)
// Use the authorization code that is pushed to the redirect URL
code := queryParts["code"][0]
// Exchange will do the handshake to retrieve the initial token.
tok, err := conf.Exchange(ctx, code, oauth2.VerifierOption(verifier))
if err != nil {
log.Fatal(err)
}
// Get the refresh token and ask user to go back to CLI
authToken = tok.RefreshToken
_, err = io.WriteString(w, "Login successful! Please close this window and return back to CLI")
if err != nil {
log.Fatal(err)
}
}
func serve(wg *sync.WaitGroup) *http.Server {
server := &http.Server{Addr: fmt.Sprintf(":%s", RedirectPort)}
http.HandleFunc(CallbackHandler, callbackHandler)
go func() {
defer wg.Done() // let main know we are done cleaning up
// always returns error. ErrServerClosed on graceful close
if err := server.ListenAndServe(); err != http.ErrServerClosed {
// unexpected error. port in use?
log.Fatalf("ListenAndServe(): %v", err)
}
}()
// returning reference so caller can call Shutdown()
return server
}
func shutdown(server *http.Server) {
if err := server.Shutdown(context.TODO()); err != nil {
log.Fatalf("HTTP shutdown error: %v", err)
}
}
func InitiateAuthCode(clientID string) (string, error) {
authToken = ""
ctx = context.Background()
// Create config for OAuth2, redirect to localhost for callback verification and retrieving tokens
conf = &oauth2.Config{
ClientID: clientID,
ClientSecret: "",
Scopes: []string{"openid"},
Endpoint: oauth2.Endpoint{
AuthURL: DefaultAuthURL,
TokenURL: DefaultTokenURL,
},
RedirectURL: fmt.Sprintf("%s:%s%s", RedirectURL, RedirectPort, CallbackHandler),
}
verifier = oauth2.GenerateVerifier()
// add transport for self-signed certificate to context
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
sslcli := &http.Client{Transport: tr}
ctx = context.WithValue(ctx, oauth2.HTTPClient, sslcli)
// Create URL with PKCE
url := conf.AuthCodeURL("state", oauth2.AccessTypeOffline, oauth2.S256ChallengeOption(verifier))
httpServerExitDone := &sync.WaitGroup{}
httpServerExitDone.Add(1)
server := serve(httpServerExitDone)
err := open.Run(url)
if err != nil {
return authToken, err
}
fiveMinTimer := time.Now().Local().Add(time.Minute * 5)
// Wait for the user to finish auth process, and return back with authToken. Otherwise, return an error after 5 mins
for {
if authToken != "" {
shutdown(server)
return authToken, nil
}
if time.Now().After(fiveMinTimer) {
shutdown(server)
return authToken, fmt.Errorf("Time expired")
}
}
}

View file

@ -0,0 +1,68 @@
package authentication
import (
"context"
"fmt"
"golang.org/x/oauth2"
)
const (
DeviceAuthURL = "https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/auth/device"
)
type DeviceAuthConfig struct {
conf *oauth2.Config
verifierOpt oauth2.AuthCodeOption
DeviceAuthResponse *oauth2.DeviceAuthResponse
ClientID string
}
// Step 1:
// Initiates device code flow and returns the device auth config.
// After running, use your DeviceAuthConfig to display the user code and verification URI
//
// fmt.Printf("To continue login, navigate to %v and enter code %v\n", deviceAuthResp.VerificationURI, deviceAuthResp.UserCode)
// fmt.Printf("Checking status every %v seconds...\n", deviceAuthResp.Interval)
func (d *DeviceAuthConfig) InitiateDeviceAuth(ctx context.Context) (*DeviceAuthConfig, error) {
d.conf = &oauth2.Config{
ClientID: d.ClientID,
ClientSecret: "",
Scopes: []string{"openid"},
Endpoint: oauth2.Endpoint{
DeviceAuthURL: DeviceAuthURL,
TokenURL: DefaultTokenURL,
},
}
// Verifiers and Challenges are required for device auth
verifier := oauth2.GenerateVerifier()
verifierOpt := oauth2.VerifierOption(verifier)
challenge := oauth2.S256ChallengeOption(verifier)
// Get device code
deviceAuthResp, err := d.conf.DeviceAuth(ctx, challenge, verifierOpt)
if err != nil {
return d, fmt.Errorf("failed to get device code: %v", err)
}
d.DeviceAuthResponse = deviceAuthResp
d.verifierOpt = verifierOpt
return d, nil
}
// Step 2:
// Initiates polling for token exchange and returns a refresh token
func (d *DeviceAuthConfig) PollForTokenExchange(ctx context.Context) (string, error) {
if d.DeviceAuthResponse == nil || d.verifierOpt == nil {
return "", fmt.Errorf("required config is nil, please run InitiateDeviceAuth first")
}
// Wait for the user to enter the code, polls at interval specified in deviceAuthResp.Interval
token, err := d.conf.DeviceAccessToken(ctx, d.DeviceAuthResponse, d.verifierOpt)
if err != nil {
return "", fmt.Errorf("error exchanging for token: %v", err)
}
return token.RefreshToken, nil
}

View file

@ -38,6 +38,9 @@ var wsRegex = regexp.MustCompile(`\s+`)
func CheckContentType(response *http.Response) error {
var err error
var mediaType string
if response.StatusCode == http.StatusNoContent {
return nil
}
contentType := response.Header.Get("Content-Type")
if contentType != "" {
mediaType, _, err = mime.ParseMediaType(contentType)

View file

@ -370,13 +370,14 @@ func (s *ClientSelector) createTransport(ctx context.Context,
// We also need to ignore TLS configuration when dialing, and explicitly set the
// network and socket when using Unix sockets:
if address.Network == UnixNetwork {
transport.DialTLS = func(_, _ string, cfg *tls.Config) (net.Conn, error) {
return net.Dial(UnixNetwork, address.Socket)
transport.DialTLSContext = func(ctx context.Context, _, _ string, cfg *tls.Config) (net.Conn, error) {
var d net.Dialer
return d.DialContext(ctx, UnixNetwork, address.Socket)
}
} else {
transport.DialTLS = func(network, addr string, cfg *tls.Config) (net.Conn,
error) {
return net.Dial(network, addr)
transport.DialTLSContext = func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error) {
var d net.Dialer
return d.DialContext(ctx, network, addr)
}
}