Documentation
¶
Index ¶
Constants ¶
const ( EIDWithValidUserNonUserAccessToken = 1154001 EIDWithPermissionUnableValidatePermission = 1155001 EIDWithPermissionInsufficientPermission = 1154002 EIDWithRoleUnableValidateRole = 1155002 EIDWithRoleInsufficientPermission = 1154003 EIDWithVerifiedEmailUnableValidateEmailStatus = 1155003 EIDWithVerifiedEmailInsufficientPermission = 1154004 EIDAccessDenied = 1154005 EIDInsufficientScope = 1154006 UnableToMarshalErrorResponse = 1155004 EIDSubdomainMismatch = 1154007 )
const ( // Global Error Codes InternalServerError = 20000 ValidationError = 20002 ForbiddenAccess = 20003 TooManyRequests = 20007 UserNotFound = 20008 TokenIsExpired = 20011 InsufficientPermissions = 20013 InvalidAudience = 20014 InsufficientScope = 20015 UnableToParseRequestBody = 20019 InvalidPaginationParameters = 20021 TokenIsNotUserToken = 20022 InvalidRefererHeader = 20023 SubdomainMismatch = 20030 )
const (
// ClaimsAttribute is the key for JWT claims stored in the request
ClaimsAttribute = "JWTClaims"
)
Variables ¶
var DevStackTraceable bool
var ErrorCodeMapping = map[int]string{ InternalServerError: "internal server error", UnauthorizedAccess: "unauthorized access", ValidationError: "validation error", ForbiddenAccess: "forbidden access", TooManyRequests: "too many requests", UserNotFound: "user not found", InsufficientPermissions: "insufficient permissions", InvalidAudience: "invalid audience", InsufficientScope: "insufficient scope", UnableToParseRequestBody: "unable to parse request body", InvalidPaginationParameters: "invalid pagination parameter", TokenIsNotUserToken: "token is not user token", InvalidRefererHeader: "invalid referer header", SubdomainMismatch: "subdomain mismatch", TokenIsExpired: "token is expired", }
Functions ¶
func ActionConverter ¶ added in v4.16.0
ActionConverter convert IAM action bit to human-readable
func RetrieveJWTClaims ¶
func RetrieveJWTClaims(request *restful.Request) *iam.JWTClaims
RetrieveJWTClaims is a convenience function to retrieve JWT claims from restful.Request. Warning: the claims can be nil if the request wasn't filtered through Auth()
Types ¶
type ErrorResponse ¶
type ErrorResponse struct { ErrorCode int `json:"errorCode"` ErrorMessage string `json:"errorMessage"` RequiredPermission *Permission `json:"requiredPermission,omitempty"` }
ErrorResponse is the generic structure for communicating errors from a REST endpoint.
type Filter ¶
type Filter struct {
// contains filtered or unexported fields
}
Filter handles auth using filter
func NewFilterWithOptions ¶ added in v4.3.0
func NewFilterWithOptions(client iam.Client, options *FilterInitializationOptions) *Filter
NewFilterWithOptions creates new Filter instance with Options Example:
iam.NewFilterWithOptions(iamClient, &FilterInitializationOptions{ AllowSubdomainMatchRefererHeaderValidation: true SubdomainValidationEnabled: true, SubdomainValidationExcludedNamespaces: ["foundations"] })
func (*Filter) Auth ¶
func (filter *Filter) Auth(opts ...FilterOption) restful.FilterFunction
Auth returns a filter that filters request with valid access token in auth header or cookie The token's claims will be passed in the request.attributes["JWTClaims"] = *iam.JWTClaims{} This filter is expandable through FilterOption parameter Example: iam.Auth(
WithValidUser(), WithPermission("ADMIN"),
)
func (*Filter) AuthAllowEmptySubdomain ¶ added in v4.22.2
func (filter *Filter) AuthAllowEmptySubdomain(opts ...FilterOption) restful.FilterFunction
AuthAllowEmptySubdomain returns a filter that filters request with valid access token in auth header or cookie The difference with Auth() is this function will also allow request without subdomain
The token's claims will be passed in the request.attributes["JWTClaims"] = *iam.JWTClaims{} This filter is expandable through FilterOption parameter Example: iam.AuthAllowEmptySubdomain(
WithValidUser(), WithPermission("ADMIN"),
)
func (*Filter) PublicAuth ¶ added in v4.6.0
func (filter *Filter) PublicAuth(opts ...FilterOption) restful.FilterFunction
PublicAuth returns a filter that allow unauthenticate request and request with valid access token in auth header or cookie If request has acces token, the token's claims will be passed in the request.attributes["JWTClaims"] = *iam.JWTClaims{} If request has invalid access token, then request treated as public access without claims This filter is expandable through FilterOption parameter Example: iam.PublicAuth(
WithValidUser(), WithPermission("ADMIN"),
)
type FilterInitializationOptions ¶ added in v4.3.0
type FilterInitializationOptions struct { StrictRefererHeaderValidation bool // Enable full path check of redirect uri in referer header validation AllowSubdomainMatchRefererHeaderValidation bool // Allow checking with subdomain SubdomainValidationEnabled bool // Enable subdomain validation. When it is true, it will match the subdomain in the request url against claims namespace. SubdomainValidationExcludedNamespaces []string // List of namespaces to be excluded for subdomain validation. When it is not emtpy and the SUBDOMAIN_VALIDATION_ENABLED is true, it will ignore specified namespaces when doing the subdomain validation. }
FilterInitializationOptions hold options for Filter during initialization
func FilterInitializationOptionsFromEnv ¶ added in v4.15.0
func FilterInitializationOptionsFromEnv() *FilterInitializationOptions
type FilterOption ¶
type FilterOption func(req *restful.Request, iamClient iam.Client, claims *iam.JWTClaims) error
FilterOption extends the basic auth filter functionality
func WithPermission ¶
func WithPermission(permission *iam.Permission) FilterOption
WithPermission filters request with valid permission only
func WithRole ¶
func WithRole(role string) FilterOption
WithRole filters request with valid role only
func WithValidAudience ¶
func WithValidAudience() FilterOption
WithValidAudience filters request from a user with verified audience
func WithValidScope ¶
func WithValidScope(scope string) FilterOption
WithValidScope filters request from a user with verified scope
func WithValidUser ¶
func WithValidUser() FilterOption
WithValidUser filters request with valid user only
func WithVerifiedEmail ¶
func WithVerifiedEmail() FilterOption
WithVerifiedEmail filters request from a user with verified email address only