identity.go raw

   1  package auth
   2  
   3  import (
   4  	"context"
   5  	"time"
   6  
   7  	"github.com/aws/smithy-go"
   8  )
   9  
  10  // Identity contains information that identifies who the user making the
  11  // request is.
  12  type Identity interface {
  13  	Expiration() time.Time
  14  }
  15  
  16  // IdentityResolver defines the interface through which an Identity is
  17  // retrieved.
  18  type IdentityResolver interface {
  19  	GetIdentity(context.Context, smithy.Properties) (Identity, error)
  20  }
  21  
  22  // IdentityResolverOptions defines the interface through which an entity can be
  23  // queried to retrieve an IdentityResolver for a given auth scheme.
  24  type IdentityResolverOptions interface {
  25  	GetIdentityResolver(schemeID string) IdentityResolver
  26  }
  27  
  28  // AnonymousIdentity is a sentinel to indicate no identity.
  29  type AnonymousIdentity struct{}
  30  
  31  var _ Identity = (*AnonymousIdentity)(nil)
  32  
  33  // Expiration returns the zero value for time, as anonymous identity never
  34  // expires.
  35  func (*AnonymousIdentity) Expiration() time.Time {
  36  	return time.Time{}
  37  }
  38  
  39  // AnonymousIdentityResolver returns AnonymousIdentity.
  40  type AnonymousIdentityResolver struct{}
  41  
  42  var _ IdentityResolver = (*AnonymousIdentityResolver)(nil)
  43  
  44  // GetIdentity returns AnonymousIdentity.
  45  func (*AnonymousIdentityResolver) GetIdentity(_ context.Context, _ smithy.Properties) (Identity, error) {
  46  	return &AnonymousIdentity{}, nil
  47  }
  48