Documentation
¶
Index ¶
- func GenerateAPIKey(ctx context.Context, name string, expiresAt *time.Time, rights ...ttnpb.Right) (key *ttnpb.APIKey, token string, err error)
- type Config
- type IdentityServer
- func (is *IdentityServer) ApplicationRights(ctx context.Context, appIDs ttnpb.ApplicationIdentifiers) (*ttnpb.Rights, error)
- func (is *IdentityServer) AuthInfo(ctx context.Context) (*ttnpb.AuthInfoResponse, error)
- func (is *IdentityServer) ClientRights(ctx context.Context, cliIDs ttnpb.ClientIdentifiers) (*ttnpb.Rights, error)
- func (is *IdentityServer) Context() context.Context
- func (is *IdentityServer) GatewayRights(ctx context.Context, gtwIDs ttnpb.GatewayIdentifiers) (*ttnpb.Rights, error)
- func (is *IdentityServer) GetConfiguration(ctx context.Context, _ *ttnpb.GetIsConfigurationRequest) (*ttnpb.GetIsConfigurationResponse, error)
- func (is *IdentityServer) IsAdmin(ctx context.Context) bool
- func (is *IdentityServer) OrganizationRights(ctx context.Context, orgIDs ttnpb.OrganizationIdentifiers) (*ttnpb.Rights, error)
- func (is *IdentityServer) RegisterHandlers(s *runtime.ServeMux, conn *grpc.ClientConn)
- func (is *IdentityServer) RegisterServices(s *grpc.Server)
- func (is *IdentityServer) RequireAdmin(ctx context.Context) error
- func (is *IdentityServer) RequireAuthenticated(ctx context.Context) error
- func (is *IdentityServer) Roles() []ttnpb.ClusterRole
- func (is *IdentityServer) SendAdminsEmail(ctx context.Context, makeMessage func(emails.Data) email.MessageData) error
- func (is *IdentityServer) SendContactsEmail(ctx context.Context, ids ttnpb.IDStringer, ...) error
- func (is *IdentityServer) SendEmail(ctx context.Context, f func(emails.Data) email.MessageData) (err error)
- func (is *IdentityServer) SendUserEmail(ctx context.Context, userIDs *ttnpb.UserIdentifiers, ...) error
- func (is *IdentityServer) SetRedisCache(redis *redis.Client)
- func (is *IdentityServer) UniversalRights(ctx context.Context) *ttnpb.Rights
- func (is *IdentityServer) UserRights(ctx context.Context, userIDs ttnpb.UserIdentifiers) (*ttnpb.Rights, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Config ¶
type Config struct {
DatabaseURI string `name:"database-uri" description:"Database connection URI"`
UserRegistration struct {
Enabled bool `name:"enabled" description:"Enable user registration"`
Invitation struct {
Required bool `name:"required" description:"Require invitations for new users"`
TokenTTL time.Duration `name:"token-ttl" description:"TTL of user invitation tokens"`
} `name:"invitation"`
ContactInfoValidation struct {
Required bool `name:"required" description:"Require contact info validation for new users"`
TokenTTL time.Duration `name:"token-ttl" description:"TTL of contact info validation tokens"`
} `name:"contact-info-validation"`
AdminApproval struct {
Required bool `name:"required" description:"Require admin approval for new users"`
} `name:"admin-approval"`
PasswordRequirements struct {
MinLength int `name:"min-length" description:"Minimum password length"`
MaxLength int `name:"max-length" description:"Maximum password length"`
MinUppercase int `name:"min-uppercase" description:"Minimum number of uppercase letters"`
MinDigits int `name:"min-digits" description:"Minimum number of digits"`
MinSpecial int `name:"min-special" description:"Minimum number of special characters"`
RejectUserID bool `name:"reject-user-id" description:"Reject passwords that contain user ID"`
RejectCommon bool `name:"reject-common" description:"Reject common passwords"`
} `name:"password-requirements"`
} `name:"user-registration"`
AuthCache struct {
MembershipTTL time.Duration `name:"membership-ttl" description:"TTL of membership caches"`
} `name:"auth-cache"`
OAuth oauth.Config `name:"oauth"`
ProfilePicture struct {
DisableUpload bool `name:"disable-upload" description:"Disable uploading profile pictures"`
UseGravatar bool `name:"use-gravatar" description:"Use Gravatar fallback for users without profile picture"`
Bucket string `name:"bucket" description:"Bucket used for storing profile pictures"`
BucketURL string `name:"bucket-url" description:"Base URL for public bucket access"`
} `name:"profile-picture"`
EndDevicePicture struct {
DisableUpload bool `name:"disable-upload" description:"Disable uploading end device pictures"`
Bucket string `name:"bucket" description:"Bucket used for storing end device pictures"`
BucketURL string `name:"bucket-url" description:"Base URL for public bucket access"`
} `name:"end-device-picture"`
UserRights struct {
CreateApplications bool `name:"create-applications" description:"Allow non-admin users to create applications in their user account"`
CreateClients bool `name:"create-clients" description:"Allow non-admin users to create OAuth clients in their user account"`
CreateGateways bool `name:"create-gateways" description:"Allow non-admin users to create gateways in their user account"`
CreateOrganizations bool `name:"create-organizations" description:"Allow non-admin users to create organizations in their user account"`
} `name:"user-rights"`
AdminRights struct {
All bool `name:"all" description:"Grant all rights to admins, including _KEYS and _ALL"`
} `name:"admin-rights"`
LoginTokens struct {
Enabled bool `name:"enabled" description:"enable users requesting login tokens"`
TokenTTL time.Duration `name:"token-ttl" description:"TTL of login tokens"`
} `name:"login-tokens"`
Email struct {
email.Config `name:",squash"`
SendGrid sendgrid.Config `name:"sendgrid"`
SMTP smtp.Config `name:"smtp"`
Templates emailTemplatesConfig `name:"templates"`
} `name:"email"`
Gateways struct {
EncryptionKeyID string `name:"encryption-key-id" description:"ID of the key used to encrypt gateway secrets at rest"`
} `name:"gateways"`
Delete struct {
Restore time.Duration `name:"restore" description:"How long after soft-deletion an entity can be restored"`
} `name:"delete"`
DevEUIBlock struct {
Enabled bool `name:"enabled" description:"Enable DevEUI address issuing from IEEE MAC block"`
ApplicationLimit int `name:"application-limit" description:"Maximum DevEUI addresses to be issued per application"`
Prefix ttntypes.EUI64Prefix `name:"prefix" description:"DevEUI block prefix"`
InitCounter int64 `name:"init-counter" description:"Initial counter value for the addresses to be issued (default 0)"`
} `name:"dev-eui-block" description:"IEEE MAC block used to issue DevEUI's to devices that are not yet programmed"`
}
Config for the Identity Server
type IdentityServer ¶
IdentityServer implements the Identity Server component.
The Identity Server exposes the Registry and Access services for Applications, OAuth clients, Gateways, Organizations and Users.
func New ¶
func New(c *component.Component, config *Config) (is *IdentityServer, err error)
New returns new *IdentityServer.
func (*IdentityServer) ApplicationRights ¶
func (is *IdentityServer) ApplicationRights(ctx context.Context, appIDs ttnpb.ApplicationIdentifiers) (*ttnpb.Rights, error)
ApplicationRights returns the rights the caller has on the given application.
func (*IdentityServer) AuthInfo ¶ added in v3.12.0
func (is *IdentityServer) AuthInfo(ctx context.Context) (*ttnpb.AuthInfoResponse, error)
AuthInfo implements rights.AuthInfoFetcher.
func (*IdentityServer) ClientRights ¶
func (is *IdentityServer) ClientRights(ctx context.Context, cliIDs ttnpb.ClientIdentifiers) (*ttnpb.Rights, error)
ClientRights returns the rights the caller has on the given client.
func (*IdentityServer) Context ¶
func (is *IdentityServer) Context() context.Context
Context returns the context of the Identity Server.
func (*IdentityServer) GatewayRights ¶
func (is *IdentityServer) GatewayRights(ctx context.Context, gtwIDs ttnpb.GatewayIdentifiers) (*ttnpb.Rights, error)
GatewayRights returns the rights the caller has on the given gateway. The query for the gateway only considers the Gateway ID and not the EUI (if provided).
func (*IdentityServer) GetConfiguration ¶ added in v3.9.0
func (is *IdentityServer) GetConfiguration(ctx context.Context, _ *ttnpb.GetIsConfigurationRequest) (*ttnpb.GetIsConfigurationResponse, error)
GetConfiguration implements the RPC that returns the configuration of the Identity Server.
func (*IdentityServer) IsAdmin ¶
func (is *IdentityServer) IsAdmin(ctx context.Context) bool
IsAdmin returns whether the caller is an admin.
func (*IdentityServer) OrganizationRights ¶
func (is *IdentityServer) OrganizationRights(ctx context.Context, orgIDs ttnpb.OrganizationIdentifiers) (*ttnpb.Rights, error)
OrganizationRights returns the rights the caller has on the given organization.
func (*IdentityServer) RegisterHandlers ¶
func (is *IdentityServer) RegisterHandlers(s *runtime.ServeMux, conn *grpc.ClientConn)
RegisterHandlers registers gRPC handlers.
func (*IdentityServer) RegisterServices ¶
func (is *IdentityServer) RegisterServices(s *grpc.Server)
RegisterServices registers services provided by is at s.
func (*IdentityServer) RequireAdmin ¶
func (is *IdentityServer) RequireAdmin(ctx context.Context) error
RequireAdmin returns an error when the caller is not an admin.
func (*IdentityServer) RequireAuthenticated ¶
func (is *IdentityServer) RequireAuthenticated(ctx context.Context) error
RequireAuthenticated checks the request context for authentication presence and returns an error if there is none.
func (*IdentityServer) Roles ¶
func (is *IdentityServer) Roles() []ttnpb.ClusterRole
Roles returns the roles that the Identity Server fulfills.
func (*IdentityServer) SendAdminsEmail ¶ added in v3.9.0
func (is *IdentityServer) SendAdminsEmail(ctx context.Context, makeMessage func(emails.Data) email.MessageData) error
SendAdminsEmail sends an email to the admins of the network.
func (*IdentityServer) SendContactsEmail ¶
func (is *IdentityServer) SendContactsEmail(ctx context.Context, ids ttnpb.IDStringer, makeMessage func(emails.Data) email.MessageData) error
SendContactsEmail sends an email to the contacts of the given entity.
func (*IdentityServer) SendEmail ¶
func (is *IdentityServer) SendEmail(ctx context.Context, f func(emails.Data) email.MessageData) (err error)
SendEmail sends an email.
func (*IdentityServer) SendUserEmail ¶
func (is *IdentityServer) SendUserEmail(ctx context.Context, userIDs *ttnpb.UserIdentifiers, makeMessage func(emails.Data) email.MessageData) error
SendUserEmail sends an email to the given user.
func (*IdentityServer) SetRedisCache ¶
func (is *IdentityServer) SetRedisCache(redis *redis.Client)
SetRedisCache configures the given redis instance for caching.
func (*IdentityServer) UniversalRights ¶
func (is *IdentityServer) UniversalRights(ctx context.Context) *ttnpb.Rights
UniversalRights returns the universal rights (that apply to any entity or outside entity scope) contained in the request context. This is used to determine admin rights.
func (*IdentityServer) UserRights ¶
func (is *IdentityServer) UserRights(ctx context.Context, userIDs ttnpb.UserIdentifiers) (*ttnpb.Rights, error)
UserRights returns the rights the caller has on the given user.
Source Files
¶
- api_key_utils.go
- application_access.go
- application_registry.go
- client_access.go
- client_registry.go
- config.go
- contact_info_registry.go
- email.go
- end_device_registry.go
- entity_access.go
- gateway_access.go
- gateway_registry.go
- identityserver.go
- invitation_registry.go
- oauth_registry.go
- organization_access.go
- organization_registry.go
- picture.go
- registry_search.go
- rights.go
- user_access.go
- user_registry.go
- user_session_registry.go
- utils.go