Documentation ¶
Index ¶
- Constants
- Variables
- func CredentialsEqual(a, b map[CredentialsType]Credentials) bool
- func ManagerAllowWriteProtectedTraits(options *managerOptions)
- func ManagerExposeValidationErrorsForInternalTypeAssertion(options *managerOptions)
- type ActiveCredentialsCounter
- type ActiveCredentialsCounterStrategyProvider
- type Configuration
- type CreateIdentity
- type CredentialIdentifier
- type CredentialIdentifierCollection
- type Credentials
- type CredentialsCollection
- type CredentialsType
- type CredentialsTypeTable
- type Handler
- type HandlerProvider
- type Identity
- func (i *Identity) CopyWithoutCredentials() *Identity
- func (i *Identity) GetCredentials(t CredentialsType) (*Credentials, bool)
- func (i Identity) GetID() uuid.UUID
- func (i Identity) GetNID() uuid.UUID
- func (i *Identity) ParseCredentials(t CredentialsType, config interface{}) (*Credentials, error)
- func (i *Identity) SetCredentials(t CredentialsType, c Credentials)
- func (i Identity) TableName(ctx context.Context) string
- type ManagementProvider
- type Manager
- func (m *Manager) Create(ctx context.Context, i *Identity, opts ...ManagerOption) error
- func (m *Manager) SetTraits(ctx context.Context, id uuid.UUID, traits Traits, opts ...ManagerOption) (*Identity, error)
- func (m *Manager) Update(ctx context.Context, updated *Identity, opts ...ManagerOption) error
- func (m *Manager) UpdateSchemaID(ctx context.Context, id uuid.UUID, schemaID string, opts ...ManagerOption) error
- func (m *Manager) UpdateTraits(ctx context.Context, id uuid.UUID, traits Traits, opts ...ManagerOption) error
- type ManagerOption
- type Pool
- type PoolProvider
- type PrivilegedPool
- type PrivilegedPoolProvider
- type RecoveryAddress
- type RecoveryAddressStatus
- type RecoveryAddressType
- type Registry
- type SchemaExtensionCredentials
- type SchemaExtensionRecovery
- type SchemaExtensionVerification
- type Traits
- type UpdateIdentity
- type ValidationProvider
- type Validator
- type VerifiableAddress
- type VerifiableAddressStatus
- type VerifiableAddressType
Constants ¶
const ( VerifiableAddressTypeEmail VerifiableAddressType = AddressTypeEmail VerifiableAddressStatusPending VerifiableAddressStatus = "pending" VerifiableAddressStatusSent VerifiableAddressStatus = "sent" VerifiableAddressStatusCompleted VerifiableAddressStatus = "completed" )
const AddressTypeEmail = "email"
const RouteBase = "/identities"
Variables ¶
var ErrProtectedFieldModified = herodot.ErrForbidden.
WithReasonf(`A field was modified that updates one or more credentials-related settings. This action was blocked because an unprivileged method was used to execute the update. This is either a configuration issue or a bug and should be reported to the system administrator.`)
Functions ¶
func CredentialsEqual ¶
func CredentialsEqual(a, b map[CredentialsType]Credentials) bool
func ManagerAllowWriteProtectedTraits ¶
func ManagerAllowWriteProtectedTraits(options *managerOptions)
func ManagerExposeValidationErrorsForInternalTypeAssertion ¶
func ManagerExposeValidationErrorsForInternalTypeAssertion(options *managerOptions)
Types ¶
type ActiveCredentialsCounter ¶
type ActiveCredentialsCounter interface { ID() CredentialsType CountActiveCredentials(cc map[CredentialsType]Credentials) (int, error) }
swagger:ignore
type ActiveCredentialsCounterStrategyProvider ¶
type ActiveCredentialsCounterStrategyProvider interface {
ActiveCredentialsCounterStrategies(context.Context) []ActiveCredentialsCounter
}
swagger:ignore
type Configuration ¶
type CreateIdentity ¶
type CreateIdentity struct { // SchemaID is the ID of the JSON Schema to be used for validating the identity's traits. // // required: true // in: body SchemaID string `json:"schema_id"` // Traits represent an identity's traits. The identity is able to create, modify, and delete traits // in a self-service manner. The input will always be validated against the JSON Schema defined // in `schema_url`. // // required: true // in: body Traits json.RawMessage `json:"traits"` }
type CredentialIdentifier ¶
type CredentialIdentifier struct { ID uuid.UUID `db:"id"` Identifier string `db:"identifier"` // IdentityCredentialsID is a helper struct field for gobuffalo.pop. IdentityCredentialsID uuid.UUID `json:"-" db:"identity_credential_id"` // CreatedAt is a helper struct field for gobuffalo.pop. CreatedAt time.Time `json:"-" db:"created_at"` // UpdatedAt is a helper struct field for gobuffalo.pop. UpdatedAt time.Time `json:"-" db:"updated_at"` NID uuid.UUID `json:"-" faker:"-" db:"nid"` }
swagger:ignore
type CredentialIdentifierCollection ¶
type CredentialIdentifierCollection []CredentialIdentifier
swagger:ignore
type Credentials ¶
type Credentials struct { ID uuid.UUID `json:"-" db:"id"` CredentialTypeID uuid.UUID `json:"-" db:"identity_credential_type_id"` // Type discriminates between different types of credentials. Type CredentialsType `json:"type" db:"-"` // Identifiers represents a list of unique identifiers this credential type matches. Identifiers []string `json:"identifiers" db:"-"` // Config contains the concrete credential payload. This might contain the bcrypt-hashed password, or the email // for passwordless authentication. Config sqlxx.JSONRawMessage `json:"config" db:"config"` IdentityID uuid.UUID `json:"-" faker:"-" db:"identity_id"` // CreatedAt is a helper struct field for gobuffalo.pop. CreatedAt time.Time `json:"-" db:"created_at"` // UpdatedAt is a helper struct field for gobuffalo.pop. UpdatedAt time.Time `json:"-" db:"updated_at"` NID uuid.UUID `json:"-" faker:"-" db:"nid"` }
Credentials represents a specific credential type
swagger:model identityCredentials
type CredentialsType ¶
type CredentialsType string
CredentialsType represents several different credential types, like password credentials, passwordless credentials, and so on.
const ( // make sure to add all of these values to the test that ensures they are created during migration CredentialsTypePassword CredentialsType = "password" CredentialsTypeOIDC CredentialsType = "oidc" )
func (CredentialsType) String ¶
func (c CredentialsType) String() string
type CredentialsTypeTable ¶
type CredentialsTypeTable struct { ID uuid.UUID `json:"-" db:"id"` Name CredentialsType `json:"-" db:"name"` }
swagger:ignore
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
func NewHandler ¶
func NewHandler(r handlerDependencies) *Handler
func (*Handler) RegisterAdminRoutes ¶
func (h *Handler) RegisterAdminRoutes(admin *x.RouterAdmin)
type HandlerProvider ¶
type HandlerProvider interface {
IdentityHandler() *Handler
}
type Identity ¶
type Identity struct { // ID is the identity's unique identifier. // // The Identity ID can not be changed and can not be chosen. This ensures future // compatibility and optimization for distributed stores such as CockroachDB. // // required: true ID uuid.UUID `json:"id" faker:"-" db:"id"` // Credentials represents all credentials that can be used for authenticating this identity. Credentials map[CredentialsType]Credentials `json:"-" faker:"-" db:"-"` // SchemaID is the ID of the JSON Schema to be used for validating the identity's traits. // // required: true SchemaID string `json:"schema_id" faker:"-" db:"schema_id"` // SchemaURL is the URL of the endpoint where the identity's traits schema can be fetched from. // // format: url // required: true SchemaURL string `json:"schema_url" faker:"-" db:"-"` // Traits represent an identity's traits. The identity is able to create, modify, and delete traits // in a self-service manner. The input will always be validated against the JSON Schema defined // in `schema_url`. // // required: true Traits Traits `json:"traits" faker:"-" db:"traits"` // VerifiableAddresses contains all the addresses that can be verified by the user. // // Extensions: // --- // x-omitempty: true // --- VerifiableAddresses []VerifiableAddress `json:"verifiable_addresses,omitempty" faker:"-" has_many:"identity_verifiable_addresses" fk_id:"identity_id"` // RecoveryAddresses contains all the addresses that can be used to recover an identity. // // Extensions: // --- // x-omitempty: true // --- RecoveryAddresses []RecoveryAddress `json:"recovery_addresses,omitempty" faker:"-" has_many:"identity_recovery_addresses" fk_id:"identity_id"` // CreatedAt is a helper struct field for gobuffalo.pop. CreatedAt time.Time `json:"-" db:"created_at"` // UpdatedAt is a helper struct field for gobuffalo.pop. UpdatedAt time.Time `json:"-" db:"updated_at"` NID uuid.UUID `json:"-" faker:"-" db:"nid"` // contains filtered or unexported fields }
Identity represents an Ory Kratos identity
An identity can be a real human, a service, an IoT device - everything that can be described as an "actor" in a system.
swagger:model identity
func NewIdentity ¶
func (*Identity) CopyWithoutCredentials ¶
func (*Identity) GetCredentials ¶
func (i *Identity) GetCredentials(t CredentialsType) (*Credentials, bool)
func (*Identity) ParseCredentials ¶
func (i *Identity) ParseCredentials(t CredentialsType, config interface{}) (*Credentials, error)
func (*Identity) SetCredentials ¶
func (i *Identity) SetCredentials(t CredentialsType, c Credentials)
type ManagementProvider ¶
type ManagementProvider interface {
IdentityManager() *Manager
}
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
func NewManager ¶
func NewManager(r managerDependencies) *Manager
func (*Manager) UpdateSchemaID ¶
func (*Manager) UpdateTraits ¶
type ManagerOption ¶
type ManagerOption func(*managerOptions)
type Pool ¶
type Pool interface { // ListIdentities lists all identities in the store given the page and itemsPerPage. ListIdentities(ctx context.Context, page, itemsPerPage int) ([]Identity, error) // CountIdentities counts the number of identities in the store. CountIdentities(ctx context.Context) (int64, error) // GetIdentity returns an identity by its id. Will return an error if the identity does not exist or backend // connectivity is broken. GetIdentity(context.Context, uuid.UUID) (*Identity, error) // FindVerifiableAddressByValue returns a matching address or sql.ErrNoRows if no address could be found. FindVerifiableAddressByValue(ctx context.Context, via VerifiableAddressType, address string) (*VerifiableAddress, error) // FindRecoveryAddressByValue returns a matching address or sql.ErrNoRows if no address could be found. FindRecoveryAddressByValue(ctx context.Context, via RecoveryAddressType, address string) (*RecoveryAddress, error) }
type PoolProvider ¶
type PoolProvider interface {
IdentityPool() Pool
}
type PrivilegedPool ¶
type PrivilegedPool interface { Pool // FindByCredentialsIdentifier returns an identity by querying for it's credential identifiers. FindByCredentialsIdentifier(ctx context.Context, ct CredentialsType, match string) (*Identity, *Credentials, error) // DeleteIdentity removes an identity by its id. Will return an error // if identity exists, backend connectivity is broken, or trait validation fails. DeleteIdentity(context.Context, uuid.UUID) error // UpdateVerifiableAddress updates an identity's verifiable address. UpdateVerifiableAddress(ctx context.Context, address *VerifiableAddress) error // CreateIdentity creates an identity. It is capable of setting credentials without encoding. Will return an error // if identity exists, backend connectivity is broken, or trait validation fails. CreateIdentity(context.Context, *Identity) error // UpdateIdentity updates an identity including its confidential / privileged / protected data. UpdateIdentity(context.Context, *Identity) error // GetIdentityConfidential returns the identity including it's raw credentials. This should only be used internally. GetIdentityConfidential(context.Context, uuid.UUID) (*Identity, error) // ListVerifiableAddresses lists all tracked verifiable addresses, regardless of whether they are already verified // or not. ListVerifiableAddresses(ctx context.Context, page, itemsPerPage int) ([]VerifiableAddress, error) // ListRecoveryAddresses lists all tracked recovery addresses. ListRecoveryAddresses(ctx context.Context, page, itemsPerPage int) ([]RecoveryAddress, error) }
type PrivilegedPoolProvider ¶
type PrivilegedPoolProvider interface {
PrivilegedIdentityPool() PrivilegedPool
}
type RecoveryAddress ¶
type RecoveryAddress struct { // required: true ID uuid.UUID `json:"id" db:"id" faker:"-"` // required: true Value string `json:"value" db:"value"` // required: true Via RecoveryAddressType `json:"via" db:"via"` // IdentityID is a helper struct field for gobuffalo.pop. IdentityID uuid.UUID `json:"-" faker:"-" db:"identity_id"` // CreatedAt is a helper struct field for gobuffalo.pop. CreatedAt time.Time `json:"-" faker:"-" db:"created_at"` // UpdatedAt is a helper struct field for gobuffalo.pop. UpdatedAt time.Time `json:"-" faker:"-" db:"updated_at"` NID uuid.UUID `json:"-" faker:"-" db:"nid"` }
swagger:model recoveryIdentityAddress
func NewRecoveryEmailAddress ¶
func NewRecoveryEmailAddress( value string, identity uuid.UUID, ) *RecoveryAddress
type RecoveryAddressStatus ¶
type RecoveryAddressStatus string
RecoveryAddressStatus must not exceed 16 characters as that is the limitation in the SQL Schema.
type RecoveryAddressType ¶
type RecoveryAddressType string
RecoveryAddressType must not exceed 16 characters as that is the limitation in the SQL Schema.
const (
RecoveryAddressTypeEmail RecoveryAddressType = AddressTypeEmail
)
func (RecoveryAddressType) HTMLFormInputType ¶
func (v RecoveryAddressType) HTMLFormInputType() string
type SchemaExtensionCredentials ¶
type SchemaExtensionCredentials struct {
// contains filtered or unexported fields
}
func NewSchemaExtensionCredentials ¶
func NewSchemaExtensionCredentials(i *Identity) *SchemaExtensionCredentials
func (*SchemaExtensionCredentials) Finish ¶
func (r *SchemaExtensionCredentials) Finish() error
func (*SchemaExtensionCredentials) Run ¶
func (r *SchemaExtensionCredentials) Run(_ jsonschema.ValidationContext, s schema.ExtensionConfig, value interface{}) error
type SchemaExtensionRecovery ¶
type SchemaExtensionRecovery struct {
// contains filtered or unexported fields
}
func NewSchemaExtensionRecovery ¶
func NewSchemaExtensionRecovery(i *Identity) *SchemaExtensionRecovery
func (*SchemaExtensionRecovery) Finish ¶
func (r *SchemaExtensionRecovery) Finish() error
func (*SchemaExtensionRecovery) Run ¶
func (r *SchemaExtensionRecovery) Run(ctx jsonschema.ValidationContext, s schema.ExtensionConfig, value interface{}) error
type SchemaExtensionVerification ¶
type SchemaExtensionVerification struct {
// contains filtered or unexported fields
}
func NewSchemaExtensionVerification ¶
func NewSchemaExtensionVerification(i *Identity, lifespan time.Duration) *SchemaExtensionVerification
func (*SchemaExtensionVerification) Finish ¶
func (r *SchemaExtensionVerification) Finish() error
func (*SchemaExtensionVerification) Run ¶
func (r *SchemaExtensionVerification) Run(ctx jsonschema.ValidationContext, s schema.ExtensionConfig, value interface{}) error
type Traits ¶
type Traits json.RawMessage
func (Traits) MarshalJSON ¶
MarshalJSON returns m as the JSON encoding of m.
func (*Traits) UnmarshalJSON ¶
UnmarshalJSON sets *m to a copy of data.
type UpdateIdentity ¶
type UpdateIdentity struct { // SchemaID is the ID of the JSON Schema to be used for validating the identity's traits. If set // will update the Identity's SchemaID. SchemaID string `json:"schema_id"` // Traits represent an identity's traits. The identity is able to create, modify, and delete traits // in a self-service manner. The input will always be validated against the JSON Schema defined // in `schema_id`. // // required: true Traits json.RawMessage `json:"traits"` }
type ValidationProvider ¶
type ValidationProvider interface {
IdentityValidator() *Validator
}
type Validator ¶
type Validator struct {
// contains filtered or unexported fields
}
func NewValidator ¶
func NewValidator(d validatorDependencies) *Validator
type VerifiableAddress ¶
type VerifiableAddress struct { // required: true ID uuid.UUID `json:"id" db:"id" faker:"-"` // required: true Value string `json:"value" db:"value"` // required: true Verified bool `json:"verified" db:"verified"` // required: true Via VerifiableAddressType `json:"via" db:"via"` // required: true Status VerifiableAddressStatus `json:"status" db:"status"` VerifiedAt sqlxx.NullTime `json:"verified_at" faker:"-" db:"verified_at"` // IdentityID is a helper struct field for gobuffalo.pop. IdentityID uuid.UUID `json:"-" faker:"-" db:"identity_id"` // CreatedAt is a helper struct field for gobuffalo.pop. CreatedAt time.Time `json:"-" faker:"-" db:"created_at"` // UpdatedAt is a helper struct field for gobuffalo.pop. UpdatedAt time.Time `json:"-" faker:"-" db:"updated_at"` NID uuid.UUID `json:"-" faker:"-" db:"nid"` }
swagger:model verifiableIdentityAddress
func NewVerifiableEmailAddress ¶
func NewVerifiableEmailAddress(value string, identity uuid.UUID) *VerifiableAddress
func (VerifiableAddress) GetID ¶
func (a VerifiableAddress) GetID() uuid.UUID
func (VerifiableAddress) GetNID ¶
func (a VerifiableAddress) GetNID() uuid.UUID
type VerifiableAddressStatus ¶
type VerifiableAddressStatus string
VerifiableAddressStatus must not exceed 16 characters as that is the limitation in the SQL Schema.
type VerifiableAddressType ¶
type VerifiableAddressType string
VerifiableAddressType must not exceed 16 characters as that is the limitation in the SQL Schema.
func (VerifiableAddressType) HTMLFormInputType ¶
func (v VerifiableAddressType) HTMLFormInputType() string