identity.go

 1package auth
 2
 3import (
 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.
12type Identity interface {
13	Expiration() time.Time
14}
15
16// IdentityResolver defines the interface through which an Identity is
17// retrieved.
18type 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.
24type IdentityResolverOptions interface {
25	GetIdentityResolver(schemeID string) IdentityResolver
26}
27
28// AnonymousIdentity is a sentinel to indicate no identity.
29type AnonymousIdentity struct{}
30
31var _ Identity = (*AnonymousIdentity)(nil)
32
33// Expiration returns the zero value for time, as anonymous identity never
34// expires.
35func (*AnonymousIdentity) Expiration() time.Time {
36	return time.Time{}
37}
38
39// AnonymousIdentityResolver returns AnonymousIdentity.
40type AnonymousIdentityResolver struct{}
41
42var _ IdentityResolver = (*AnonymousIdentityResolver)(nil)
43
44// GetIdentity returns AnonymousIdentity.
45func (*AnonymousIdentityResolver) GetIdentity(_ context.Context, _ smithy.Properties) (Identity, error) {
46	return &AnonymousIdentity{}, nil
47}