identity.go 1.3 KB

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