1
0
mirror of https://github.com/go-micro/go-micro.git synced 2024-11-30 08:06:40 +02:00
go-micro/auth/auth.go
ben-toogood 4401c12e6c Auth Wrapper (#1174)
* Auth Wrapper

* Tweak cmd flag

* auth_excludes => auth_exclude

* Make Auth.Excludes variadic

* Use metadata.Get (passes through http and http2 it will go through various case formats)

* fix auth wrapper auth.Auth interface initialisation

Co-authored-by: Asim Aslam <asim@aslam.me>
2020-02-10 08:26:28 +00:00

53 lines
1.2 KiB
Go

// Package auth provides authentication and authorization capability
package auth
import (
"time"
)
// Auth providers authentication and authorization
type Auth interface {
// String to identify the package
String() string
// Init the auth package
Init(opts ...Option) error
// Options returns the options set
Options() Options
// Generate a new auth Account
Generate(id string, opts ...GenerateOption) (*Account, error)
// Revoke an authorization Account
Revoke(token string) error
// Validate an account token
Validate(token string) (*Account, error)
}
// Resource is an entity such as a user or
type Resource struct {
// Name of the resource
Name string
// Type of resource, e.g.
Type string
}
// Role an account has
type Role struct {
Name string
Resource *Resource
}
// Account provided by an auth provider
type Account struct {
// ID of the account (UUID or email)
Id string `json: "id"`
// Token used to authenticate
Token string `json: "token"`
// Time of Account creation
Created time.Time `json:"created"`
// Time of Account expiry
Expiry time.Time `json:"expiry"`
// Roles associated with the Account
Roles []*Role `json:"roles"`
// Any other associated metadata
Metadata map[string]string `json:"metadata"`
}