Bumps the go-deps group with 8 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) | `1.30.3` | `1.30.4` | | [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.27.9` | `1.27.31` | | [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) | `1.16.9` | `1.17.16` | | [github.com/aws/aws-sdk-go-v2/service/autoscaling](https://github.com/aws/aws-sdk-go-v2) | `1.43.3` | `1.43.5` | | [github.com/aws/aws-sdk-go-v2/service/ec2](https://github.com/aws/aws-sdk-go-v2) | `1.173.0` | `1.177.0` | | [github.com/openshift-online/ocm-sdk-go](https://github.com/openshift-online/ocm-sdk-go) | `0.1.432` | `0.1.438` | | [github.com/osbuild/images](https://github.com/osbuild/images) | `0.79.0` | `0.80.0` | | [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) | `1.19.1` | `1.20.2` | Updates `github.com/aws/aws-sdk-go-v2` from 1.30.3 to 1.30.4 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.30.3...v1.30.4) Updates `github.com/aws/aws-sdk-go-v2/config` from 1.27.9 to 1.27.31 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.9...config/v1.27.31) Updates `github.com/aws/aws-sdk-go-v2/credentials` from 1.17.9 to 1.17.30 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.17.9...credentials/v1.17.30) Updates `github.com/aws/aws-sdk-go-v2/feature/ec2/imds` from 1.16.0 to 1.16.12 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.16.0...v1.16.12) Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.16.9 to 1.17.16 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.16.9...credentials/v1.17.16) Updates `github.com/aws/aws-sdk-go-v2/service/autoscaling` from 1.43.3 to 1.43.5 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/fsx/v1.43.3...service/fsx/v1.43.5) Updates `github.com/aws/aws-sdk-go-v2/service/ec2` from 1.173.0 to 1.177.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ec2/v1.173.0...service/ec2/v1.177.0) Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.51.4 to 1.61.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.51.4...service/s3/v1.61.0) Updates `github.com/aws/smithy-go` from 1.20.3 to 1.20.4 - [Release notes](https://github.com/aws/smithy-go/releases) - [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws/smithy-go/compare/v1.20.3...v1.20.4) Updates `github.com/openshift-online/ocm-sdk-go` from 0.1.432 to 0.1.438 - [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.432...v0.1.438) Updates `github.com/osbuild/images` from 0.79.0 to 0.80.0 - [Release notes](https://github.com/osbuild/images/releases) - [Commits](https://github.com/osbuild/images/compare/v0.79.0...v0.80.0) Updates `github.com/prometheus/client_golang` from 1.19.1 to 1.20.2 - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.19.1...v1.20.2) Updates `google.golang.org/api` from 0.193.0 to 0.194.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.193.0...v0.194.0) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: go-deps - dependency-name: github.com/aws/aws-sdk-go-v2/config dependency-type: direct:production update-type: version-update:semver-patch dependency-group: go-deps - dependency-name: github.com/aws/aws-sdk-go-v2/credentials dependency-type: direct:production update-type: version-update:semver-patch dependency-group: go-deps - dependency-name: github.com/aws/aws-sdk-go-v2/feature/ec2/imds dependency-type: direct:production update-type: version-update:semver-patch dependency-group: go-deps - dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-deps - dependency-name: github.com/aws/aws-sdk-go-v2/service/autoscaling dependency-type: direct:production update-type: version-update:semver-patch dependency-group: go-deps - dependency-name: github.com/aws/aws-sdk-go-v2/service/ec2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-deps - dependency-name: github.com/aws/aws-sdk-go-v2/service/s3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-deps - dependency-name: github.com/aws/smithy-go 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: github.com/prometheus/client_golang 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>
296 lines
8.5 KiB
Go
296 lines
8.5 KiB
Go
// Code generated by smithy-go-codegen DO NOT EDIT.
|
|
|
|
package sts
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
|
|
smithy "github.com/aws/smithy-go"
|
|
smithyauth "github.com/aws/smithy-go/auth"
|
|
"github.com/aws/smithy-go/middleware"
|
|
smithyhttp "github.com/aws/smithy-go/transport/http"
|
|
)
|
|
|
|
func bindAuthParamsRegion(_ interface{}, params *AuthResolverParameters, _ interface{}, options Options) {
|
|
params.Region = options.Region
|
|
}
|
|
|
|
type setLegacyContextSigningOptionsMiddleware struct {
|
|
}
|
|
|
|
func (*setLegacyContextSigningOptionsMiddleware) ID() string {
|
|
return "setLegacyContextSigningOptions"
|
|
}
|
|
|
|
func (m *setLegacyContextSigningOptionsMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) (
|
|
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
|
) {
|
|
rscheme := getResolvedAuthScheme(ctx)
|
|
schemeID := rscheme.Scheme.SchemeID()
|
|
|
|
if sn := awsmiddleware.GetSigningName(ctx); sn != "" {
|
|
if schemeID == "aws.auth#sigv4" {
|
|
smithyhttp.SetSigV4SigningName(&rscheme.SignerProperties, sn)
|
|
} else if schemeID == "aws.auth#sigv4a" {
|
|
smithyhttp.SetSigV4ASigningName(&rscheme.SignerProperties, sn)
|
|
}
|
|
}
|
|
|
|
if sr := awsmiddleware.GetSigningRegion(ctx); sr != "" {
|
|
if schemeID == "aws.auth#sigv4" {
|
|
smithyhttp.SetSigV4SigningRegion(&rscheme.SignerProperties, sr)
|
|
} else if schemeID == "aws.auth#sigv4a" {
|
|
smithyhttp.SetSigV4ASigningRegions(&rscheme.SignerProperties, []string{sr})
|
|
}
|
|
}
|
|
|
|
return next.HandleFinalize(ctx, in)
|
|
}
|
|
|
|
func addSetLegacyContextSigningOptionsMiddleware(stack *middleware.Stack) error {
|
|
return stack.Finalize.Insert(&setLegacyContextSigningOptionsMiddleware{}, "Signing", middleware.Before)
|
|
}
|
|
|
|
type withAnonymous struct {
|
|
resolver AuthSchemeResolver
|
|
}
|
|
|
|
var _ AuthSchemeResolver = (*withAnonymous)(nil)
|
|
|
|
func (v *withAnonymous) ResolveAuthSchemes(ctx context.Context, params *AuthResolverParameters) ([]*smithyauth.Option, error) {
|
|
opts, err := v.resolver.ResolveAuthSchemes(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
opts = append(opts, &smithyauth.Option{
|
|
SchemeID: smithyauth.SchemeIDAnonymous,
|
|
})
|
|
return opts, nil
|
|
}
|
|
|
|
func wrapWithAnonymousAuth(options *Options) {
|
|
if _, ok := options.AuthSchemeResolver.(*defaultAuthSchemeResolver); !ok {
|
|
return
|
|
}
|
|
|
|
options.AuthSchemeResolver = &withAnonymous{
|
|
resolver: options.AuthSchemeResolver,
|
|
}
|
|
}
|
|
|
|
// AuthResolverParameters contains the set of inputs necessary for auth scheme
|
|
// resolution.
|
|
type AuthResolverParameters struct {
|
|
// The name of the operation being invoked.
|
|
Operation string
|
|
|
|
// The region in which the operation is being invoked.
|
|
Region string
|
|
}
|
|
|
|
func bindAuthResolverParams(ctx context.Context, operation string, input interface{}, options Options) *AuthResolverParameters {
|
|
params := &AuthResolverParameters{
|
|
Operation: operation,
|
|
}
|
|
|
|
bindAuthParamsRegion(ctx, params, input, options)
|
|
|
|
return params
|
|
}
|
|
|
|
// AuthSchemeResolver returns a set of possible authentication options for an
|
|
// operation.
|
|
type AuthSchemeResolver interface {
|
|
ResolveAuthSchemes(context.Context, *AuthResolverParameters) ([]*smithyauth.Option, error)
|
|
}
|
|
|
|
type defaultAuthSchemeResolver struct{}
|
|
|
|
var _ AuthSchemeResolver = (*defaultAuthSchemeResolver)(nil)
|
|
|
|
func (*defaultAuthSchemeResolver) ResolveAuthSchemes(ctx context.Context, params *AuthResolverParameters) ([]*smithyauth.Option, error) {
|
|
if overrides, ok := operationAuthOptions[params.Operation]; ok {
|
|
return overrides(params), nil
|
|
}
|
|
return serviceAuthOptions(params), nil
|
|
}
|
|
|
|
var operationAuthOptions = map[string]func(*AuthResolverParameters) []*smithyauth.Option{
|
|
"AssumeRoleWithSAML": func(params *AuthResolverParameters) []*smithyauth.Option {
|
|
return []*smithyauth.Option{
|
|
{SchemeID: smithyauth.SchemeIDAnonymous},
|
|
}
|
|
},
|
|
|
|
"AssumeRoleWithWebIdentity": func(params *AuthResolverParameters) []*smithyauth.Option {
|
|
return []*smithyauth.Option{
|
|
{SchemeID: smithyauth.SchemeIDAnonymous},
|
|
}
|
|
},
|
|
}
|
|
|
|
func serviceAuthOptions(params *AuthResolverParameters) []*smithyauth.Option {
|
|
return []*smithyauth.Option{
|
|
{
|
|
SchemeID: smithyauth.SchemeIDSigV4,
|
|
SignerProperties: func() smithy.Properties {
|
|
var props smithy.Properties
|
|
smithyhttp.SetSigV4SigningName(&props, "sts")
|
|
smithyhttp.SetSigV4SigningRegion(&props, params.Region)
|
|
return props
|
|
}(),
|
|
},
|
|
}
|
|
}
|
|
|
|
type resolveAuthSchemeMiddleware struct {
|
|
operation string
|
|
options Options
|
|
}
|
|
|
|
func (*resolveAuthSchemeMiddleware) ID() string {
|
|
return "ResolveAuthScheme"
|
|
}
|
|
|
|
func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) (
|
|
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
|
) {
|
|
params := bindAuthResolverParams(ctx, m.operation, getOperationInput(ctx), m.options)
|
|
options, err := m.options.AuthSchemeResolver.ResolveAuthSchemes(ctx, params)
|
|
if err != nil {
|
|
return out, metadata, fmt.Errorf("resolve auth scheme: %w", err)
|
|
}
|
|
|
|
scheme, ok := m.selectScheme(options)
|
|
if !ok {
|
|
return out, metadata, fmt.Errorf("could not select an auth scheme")
|
|
}
|
|
|
|
ctx = setResolvedAuthScheme(ctx, scheme)
|
|
return next.HandleFinalize(ctx, in)
|
|
}
|
|
|
|
func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) (*resolvedAuthScheme, bool) {
|
|
for _, option := range options {
|
|
if option.SchemeID == smithyauth.SchemeIDAnonymous {
|
|
return newResolvedAuthScheme(smithyhttp.NewAnonymousScheme(), option), true
|
|
}
|
|
|
|
for _, scheme := range m.options.AuthSchemes {
|
|
if scheme.SchemeID() != option.SchemeID {
|
|
continue
|
|
}
|
|
|
|
if scheme.IdentityResolver(m.options) != nil {
|
|
return newResolvedAuthScheme(scheme, option), true
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil, false
|
|
}
|
|
|
|
type resolvedAuthSchemeKey struct{}
|
|
|
|
type resolvedAuthScheme struct {
|
|
Scheme smithyhttp.AuthScheme
|
|
IdentityProperties smithy.Properties
|
|
SignerProperties smithy.Properties
|
|
}
|
|
|
|
func newResolvedAuthScheme(scheme smithyhttp.AuthScheme, option *smithyauth.Option) *resolvedAuthScheme {
|
|
return &resolvedAuthScheme{
|
|
Scheme: scheme,
|
|
IdentityProperties: option.IdentityProperties,
|
|
SignerProperties: option.SignerProperties,
|
|
}
|
|
}
|
|
|
|
func setResolvedAuthScheme(ctx context.Context, scheme *resolvedAuthScheme) context.Context {
|
|
return middleware.WithStackValue(ctx, resolvedAuthSchemeKey{}, scheme)
|
|
}
|
|
|
|
func getResolvedAuthScheme(ctx context.Context) *resolvedAuthScheme {
|
|
v, _ := middleware.GetStackValue(ctx, resolvedAuthSchemeKey{}).(*resolvedAuthScheme)
|
|
return v
|
|
}
|
|
|
|
type getIdentityMiddleware struct {
|
|
options Options
|
|
}
|
|
|
|
func (*getIdentityMiddleware) ID() string {
|
|
return "GetIdentity"
|
|
}
|
|
|
|
func (m *getIdentityMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) (
|
|
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
|
) {
|
|
rscheme := getResolvedAuthScheme(ctx)
|
|
if rscheme == nil {
|
|
return out, metadata, fmt.Errorf("no resolved auth scheme")
|
|
}
|
|
|
|
resolver := rscheme.Scheme.IdentityResolver(m.options)
|
|
if resolver == nil {
|
|
return out, metadata, fmt.Errorf("no identity resolver")
|
|
}
|
|
|
|
identity, err := resolver.GetIdentity(ctx, rscheme.IdentityProperties)
|
|
if err != nil {
|
|
return out, metadata, fmt.Errorf("get identity: %w", err)
|
|
}
|
|
|
|
ctx = setIdentity(ctx, identity)
|
|
return next.HandleFinalize(ctx, in)
|
|
}
|
|
|
|
type identityKey struct{}
|
|
|
|
func setIdentity(ctx context.Context, identity smithyauth.Identity) context.Context {
|
|
return middleware.WithStackValue(ctx, identityKey{}, identity)
|
|
}
|
|
|
|
func getIdentity(ctx context.Context) smithyauth.Identity {
|
|
v, _ := middleware.GetStackValue(ctx, identityKey{}).(smithyauth.Identity)
|
|
return v
|
|
}
|
|
|
|
type signRequestMiddleware struct {
|
|
}
|
|
|
|
func (*signRequestMiddleware) ID() string {
|
|
return "Signing"
|
|
}
|
|
|
|
func (m *signRequestMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) (
|
|
out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
|
|
) {
|
|
req, ok := in.Request.(*smithyhttp.Request)
|
|
if !ok {
|
|
return out, metadata, fmt.Errorf("unexpected transport type %T", in.Request)
|
|
}
|
|
|
|
rscheme := getResolvedAuthScheme(ctx)
|
|
if rscheme == nil {
|
|
return out, metadata, fmt.Errorf("no resolved auth scheme")
|
|
}
|
|
|
|
identity := getIdentity(ctx)
|
|
if identity == nil {
|
|
return out, metadata, fmt.Errorf("no identity")
|
|
}
|
|
|
|
signer := rscheme.Scheme.Signer()
|
|
if signer == nil {
|
|
return out, metadata, fmt.Errorf("no signer")
|
|
}
|
|
|
|
if err := signer.SignRequest(ctx, req, identity, rscheme.SignerProperties); err != nil {
|
|
return out, metadata, fmt.Errorf("sign request: %w", err)
|
|
}
|
|
|
|
return next.HandleFinalize(ctx, in)
|
|
}
|