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}