identity

package
v0.17.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2023 License: MIT Imports: 13 Imported by: 1

Documentation

Overview

Package identity extracts the callers contextual identity information from the HTTP/TLS requests and exposes them for access via the generalized go context model.

Index

Constants

View Source
const GuestRoleName = "guest"

GuestRoleName is default role name for guest

Variables

This section is empty.

Functions

func AddToContext

func AddToContext(ctx context.Context, rq *RequestContext) context.Context

AddToContext returns a new golang context that adds `rq` as the request context.

func BasicAuthFromRequest

func BasicAuthFromRequest(r *http.Request) (id string, secret string, err error)

BasicAuthFromRequest returns client id from Basic authentication, which is in base64encode(id:secret) form

func ClientIPFromRequest

func ClientIPFromRequest(r *http.Request) string

ClientIPFromRequest return client's real public IP address from http request headers.

func NewAuthUnaryInterceptor

func NewAuthUnaryInterceptor(identityMapper ProviderFromContext) grpc.UnaryServerInterceptor

NewAuthUnaryInterceptor returns grpc.UnaryServerInterceptor that identity to the context

func NewContextHandler

func NewContextHandler(delegate http.Handler, identityMapper ProviderFromRequest) http.Handler

NewContextHandler returns a handler that will extact the role & contextID from the request and stash them away in the request context for later handlers to use. Also adds header to indicate which host is currently servicing the request

func WithTestIdentity

func WithTestIdentity(r *http.Request, identity Identity) *http.Request

WithTestIdentity is used in unit tests to set HTTP request identity

Types

type Context

type Context interface {
	Identity() Identity
	ClientIP() string
}

Context represents user contextual information about a request being processed by the server, it includes identity, CorrelationID [for cross system request correlation].

type Identity

type Identity interface {
	// String returns the identity as a single string value
	// in the format of role/subject
	String() string
	Role() string
	Subject() string
	Tenant() string
	Claims() jwt.MapClaims
	AccessToken() string
	TokenType() string
}

Identity contains information about the identity of an API caller

func GuestIdentityForContext

func GuestIdentityForContext(_ context.Context, _ string) (Identity, error)

GuestIdentityForContext always returns "guest" for the role

func GuestIdentityMapper

func GuestIdentityMapper(r *http.Request) (Identity, error)

GuestIdentityMapper always returns "guest" for the role

func NewIdentity

func NewIdentity(role, subject, tenant string, claims map[string]interface{}, accessToken, tokenType string) Identity

NewIdentity returns a new Identity instance with the indicated role

type ProviderFromContext

type ProviderFromContext func(ctx context.Context, uri string) (Identity, error)

ProviderFromContext returns Identity from supplied context

type ProviderFromRequest

type ProviderFromRequest func(*http.Request) (Identity, error)

ProviderFromRequest returns Identity from supplied HTTP request

type RequestContext

type RequestContext struct {
	// contains filtered or unexported fields
}

RequestContext represents user contextual information about a request being processed by the server, it includes identity, CorrelationID [for cross system request correlation].

func FromContext

func FromContext(ctx context.Context) *RequestContext

FromContext extracts the RequestContext stored inside a go context. Returns null if no such value exists.

func FromRequest

func FromRequest(r *http.Request) *RequestContext

FromRequest returns the full context ascocicated with this http request.

func NewRequestContext

func NewRequestContext(id Identity) *RequestContext

NewRequestContext creates a request context with a specific identity.

func (*RequestContext) ClientIP

func (c *RequestContext) ClientIP() string

ClientIP returns request's IP

func (*RequestContext) Identity

func (c *RequestContext) Identity() Identity

Identity returns request's identity

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL