Documentation ¶
Index ¶
- func DefaultGetVisibilityMetadataFunc(labelKey string) ...
- type Extendable
- type SecurityBuilder
- func (sb *SecurityBuilder) Authentication() *SecurityBuilder
- func (sb *SecurityBuilder) Authorization() *SecurityBuilder
- func (sb *SecurityBuilder) Build()
- func (sb *SecurityBuilder) Clear() *SecurityBuilder
- func (sb *SecurityBuilder) ClearAuthentication() *SecurityBuilder
- func (sb *SecurityBuilder) ClearAuthorization() *SecurityBuilder
- func (sb *SecurityBuilder) Method(methods ...string) *SecurityBuilder
- func (sb *SecurityBuilder) Optional() *SecurityBuilder
- func (sb *SecurityBuilder) Path(paths ...string) *SecurityBuilder
- func (sb *SecurityBuilder) Required() *SecurityBuilder
- func (sb *SecurityBuilder) Reset() *SecurityBuilder
- func (sb *SecurityBuilder) SetAccessLevel(accessLevel web.AccessLevel) *SecurityBuilder
- func (sb *SecurityBuilder) WithAuthentication(authenticator httpsec.Authenticator) *SecurityBuilder
- func (sb *SecurityBuilder) WithAuthorization(authorizer httpsec.Authorizer) *SecurityBuilder
- func (sb *SecurityBuilder) WithClientID(clientID string) *SecurityBuilder
- func (sb *SecurityBuilder) WithClientIDSuffix(suffix string) *SecurityBuilder
- func (sb *SecurityBuilder) WithClientIDSuffixes(suffixes []string) *SecurityBuilder
- func (sb *SecurityBuilder) WithScopes(scopes ...string) *SecurityBuilder
- type ServiceManager
- type ServiceManagerBuilder
- func (smb *ServiceManagerBuilder) Build() *ServiceManager
- func (smb *ServiceManagerBuilder) EnableMultitenancy(labelKey string, extractTenantFunc func(*web.Request) (string, error)) (*ServiceManagerBuilder, error)
- func (smb *ServiceManagerBuilder) RegisterExtension(registry Extendable) *ServiceManagerBuilder
- func (smb *ServiceManagerBuilder) RegisterNotificationReceiversFilter(filterFunc storage.ReceiversFilterFunc)
- func (smb *ServiceManagerBuilder) Security() *SecurityBuilder
- func (smb *ServiceManagerBuilder) WithCreateAroundTxInterceptorProvider(objectType types.ObjectType, ...) *interceptorRegistrationBuilder
- func (smb *ServiceManagerBuilder) WithCreateInterceptorProvider(objectType types.ObjectType, provider storage.CreateInterceptorProvider) *interceptorRegistrationBuilder
- func (smb *ServiceManagerBuilder) WithCreateOnTxInterceptorProvider(objectType types.ObjectType, provider storage.CreateOnTxInterceptorProvider) *interceptorRegistrationBuilder
- func (smb *ServiceManagerBuilder) WithDeleteAroundTxInterceptorProvider(objectType types.ObjectType, ...) *interceptorRegistrationBuilder
- func (smb *ServiceManagerBuilder) WithDeleteInterceptorProvider(objectType types.ObjectType, provider storage.DeleteInterceptorProvider) *interceptorRegistrationBuilder
- func (smb *ServiceManagerBuilder) WithDeleteOnTxInterceptorProvider(objectType types.ObjectType, provider storage.DeleteOnTxInterceptorProvider) *interceptorRegistrationBuilder
- func (smb *ServiceManagerBuilder) WithUpdateAroundTxInterceptorProvider(objectType types.ObjectType, ...) *interceptorRegistrationBuilder
- func (smb *ServiceManagerBuilder) WithUpdateInterceptorProvider(objectType types.ObjectType, provider storage.UpdateInterceptorProvider) *interceptorRegistrationBuilder
- func (smb *ServiceManagerBuilder) WithUpdateOnTxInterceptorProvider(objectType types.ObjectType, provider storage.UpdateOnTxInterceptorProvider) *interceptorRegistrationBuilder
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultGetVisibilityMetadataFunc ¶ added in v0.19.0
func DefaultGetVisibilityMetadataFunc(labelKey string) func(req *web.Request, repository storage.Repository) (metadata *filters.VisibilityMetadata, err error)
Types ¶
type Extendable ¶ added in v0.9.7
type Extendable interface {
Extend(context.Context, *ServiceManagerBuilder) error
}
Extendable provides a mechanism to extend further the Service Manager builder
type SecurityBuilder ¶ added in v0.9.9
type SecurityBuilder struct {
// contains filtered or unexported fields
}
SecurityBuilder provides means by which authentication and authorization filters can be constructed and attached in a builder-pattern style through the use of methods such as: Path(...), Method(...), WithAuthentication(...), WithAuthorization(...) and more. A key part of the builder is that once you've chained all desired authentication and authorization settings for a specific API (a set of path and method parameters) you have to use one of the provided finisher methods - Required() or Optional(). These finisher methods will ensure that the appropriate authentication/authorization filter is constructed for the desired path and methods. A finisher method also ensures a "clean slate" in terms of authorization so that you continue chaining and constructing new authorization filters.
func NewSecurityBuilder ¶ added in v0.9.9
func NewSecurityBuilder() (*SecurityBuilder, []web.Filter)
NewSecurityBuilder should be used when someone needs to build security of the API. The returned filters should be attached where the authentication and authorization needs to be in the filter chain
func (*SecurityBuilder) Authentication ¶ added in v0.9.9
func (sb *SecurityBuilder) Authentication() *SecurityBuilder
Authentication should be used to guarantee that a given path and method will have an authentication. Later on, a specific authentication can be applied for a given path/subpath Example:
Path("/**"). Method(http.MethodGet, http.MethodPut, http.MethodPost, http.MethodPatch, http.MethodDelete). Authentication(). Required()
func (*SecurityBuilder) Authorization ¶ added in v0.9.9
func (sb *SecurityBuilder) Authorization() *SecurityBuilder
Authorization should be used to guarantee that a given path and method will have an authorization Later on, a specific authorization can be applied for a given path/subpath Example:
Path("/**"). Method(http.MethodGet, http.MethodPut, http.MethodPost, http.MethodPatch, http.MethodDelete). Authorization(). Required()
func (*SecurityBuilder) Build ¶ added in v0.9.9
func (sb *SecurityBuilder) Build()
Builder should be called when security is ready and nothing else will be changed
func (*SecurityBuilder) Clear ¶ added in v0.9.9
func (sb *SecurityBuilder) Clear() *SecurityBuilder
Clear removes all authentication and authorization already build by the security builder
func (*SecurityBuilder) ClearAuthentication ¶ added in v0.9.9
func (sb *SecurityBuilder) ClearAuthentication() *SecurityBuilder
ClearAuthentication removes all authentication already build by the security builder
func (*SecurityBuilder) ClearAuthorization ¶ added in v0.9.9
func (sb *SecurityBuilder) ClearAuthorization() *SecurityBuilder
ClearAuthorization removes all authorization already build by the security builder
func (*SecurityBuilder) Method ¶ added in v0.9.9
func (sb *SecurityBuilder) Method(methods ...string) *SecurityBuilder
Method specifies which methods will have authentication/authorization.
func (*SecurityBuilder) Optional ¶ added in v0.9.9
func (sb *SecurityBuilder) Optional() *SecurityBuilder
Optional makes authentication/authorization optional for the requested path pattern (meaning all subpaths if "*" is used) and methods. Optional will be applied only if there are any required paths
Example 1:
no matter if Required("/v1/service_brokers") is applied if Optional("/**") is set, then all subpaths will be optional
Example 2:
Required("/v1/**") is applied Optional("/v1/service_brokers") is applied, then only "/v1/service_brokers" will be optional
Best practice is to set optional paths in the end and be as specific as possible.
func (*SecurityBuilder) Path ¶ added in v0.9.9
func (sb *SecurityBuilder) Path(paths ...string) *SecurityBuilder
Path specifies which paths will have authentication/authorization.
func (*SecurityBuilder) Required ¶ added in v0.9.9
func (sb *SecurityBuilder) Required() *SecurityBuilder
Required makes authentication/authorization required for the path pattern and methods Example 1:
no matter if Required("/v1/service_brokers") is applied if Optional("/**") is set, then all subpaths will be optional
Example 2:
Required("/v1/**") is applied Optional("/v1/service_brokers") is applied, then only "/v1/service_brokers" will be optional
func (*SecurityBuilder) Reset ¶ added in v0.9.9
func (sb *SecurityBuilder) Reset() *SecurityBuilder
Reset should be called before starting with new matchers
func (*SecurityBuilder) SetAccessLevel ¶ added in v0.9.9
func (sb *SecurityBuilder) SetAccessLevel(accessLevel web.AccessLevel) *SecurityBuilder
SetAccessLevel will set the specified access level, no matter what the authorizators returned before it. If this is set, it will override the default access level of the authorizers
func (*SecurityBuilder) WithAuthentication ¶ added in v0.9.9
func (sb *SecurityBuilder) WithAuthentication(authenticator httpsec.Authenticator) *SecurityBuilder
WithAuthentication applies the provided authenticator
func (*SecurityBuilder) WithAuthorization ¶ added in v0.9.9
func (sb *SecurityBuilder) WithAuthorization(authorizer httpsec.Authorizer) *SecurityBuilder
WithAuthorization applies the provided authorizator
func (*SecurityBuilder) WithClientID ¶ added in v0.9.9
func (sb *SecurityBuilder) WithClientID(clientID string) *SecurityBuilder
WithClientID applies authorization mechanism, which checks the JWT client id for equality with the given one
func (*SecurityBuilder) WithClientIDSuffix ¶ added in v0.9.9
func (sb *SecurityBuilder) WithClientIDSuffix(suffix string) *SecurityBuilder
WithClientIDSuffix applies authorization mechanism, which checks the JWT client id for the specified suffix
func (*SecurityBuilder) WithClientIDSuffixes ¶ added in v0.15.0
func (sb *SecurityBuilder) WithClientIDSuffixes(suffixes []string) *SecurityBuilder
WithClientIDSuffix applies authorization mechanism, which checks the JWT client id for one of the specified suffixes
func (*SecurityBuilder) WithScopes ¶ added in v0.9.9
func (sb *SecurityBuilder) WithScopes(scopes ...string) *SecurityBuilder
WithScopes applies authorization mechanism, which checks the JWT scopes for the specified scopes
type ServiceManager ¶
type ServiceManager struct { Server *server.Server Notificator storage.Notificator NotificationCleaner *storage.NotificationCleaner // contains filtered or unexported fields }
ServiceManager struct
type ServiceManagerBuilder ¶
type ServiceManagerBuilder struct { *web.API Storage *storage.InterceptableTransactionalRepository Notificator storage.Notificator NotificationCleaner *storage.NotificationCleaner OperationMaintainer *operations.Maintainer OSBClientProvider osbc.CreateFunc APIOptions *api.Options // contains filtered or unexported fields }
ServiceManagerBuilder type is an extension point that allows adding additional filters, plugins and controllers before running ServiceManager.
func New ¶
func New(ctx context.Context, cancel context.CancelFunc, e env.Environment, cfg *config.Settings) (*ServiceManagerBuilder, error)
New returns service-manager Server with default setup
func (*ServiceManagerBuilder) Build ¶
func (smb *ServiceManagerBuilder) Build() *ServiceManager
Build builds the Service Manager
func (*ServiceManagerBuilder) EnableMultitenancy ¶ added in v0.4.1
func (smb *ServiceManagerBuilder) EnableMultitenancy(labelKey string, extractTenantFunc func(*web.Request) (string, error)) (*ServiceManagerBuilder, error)
EnableMultitenancy enables multitenancy resources for Service Manager by labeling them with appropriate tenant value
func (*ServiceManagerBuilder) RegisterExtension ¶ added in v0.9.7
func (smb *ServiceManagerBuilder) RegisterExtension(registry Extendable) *ServiceManagerBuilder
func (*ServiceManagerBuilder) RegisterNotificationReceiversFilter ¶ added in v0.3.3
func (smb *ServiceManagerBuilder) RegisterNotificationReceiversFilter(filterFunc storage.ReceiversFilterFunc)
func (*ServiceManagerBuilder) Security ¶ added in v0.9.7
func (smb *ServiceManagerBuilder) Security() *SecurityBuilder
Security provides mechanism to apply authentication and authorization with a builder pattern
func (*ServiceManagerBuilder) WithCreateAroundTxInterceptorProvider ¶ added in v0.7.3
func (smb *ServiceManagerBuilder) WithCreateAroundTxInterceptorProvider(objectType types.ObjectType, provider storage.CreateAroundTxInterceptorProvider) *interceptorRegistrationBuilder
func (*ServiceManagerBuilder) WithCreateInterceptorProvider ¶ added in v0.2.0
func (smb *ServiceManagerBuilder) WithCreateInterceptorProvider(objectType types.ObjectType, provider storage.CreateInterceptorProvider) *interceptorRegistrationBuilder
func (*ServiceManagerBuilder) WithCreateOnTxInterceptorProvider ¶ added in v0.7.3
func (smb *ServiceManagerBuilder) WithCreateOnTxInterceptorProvider(objectType types.ObjectType, provider storage.CreateOnTxInterceptorProvider) *interceptorRegistrationBuilder
func (*ServiceManagerBuilder) WithDeleteAroundTxInterceptorProvider ¶ added in v0.7.3
func (smb *ServiceManagerBuilder) WithDeleteAroundTxInterceptorProvider(objectType types.ObjectType, provider storage.DeleteAroundTxInterceptorProvider) *interceptorRegistrationBuilder
func (*ServiceManagerBuilder) WithDeleteInterceptorProvider ¶ added in v0.2.0
func (smb *ServiceManagerBuilder) WithDeleteInterceptorProvider(objectType types.ObjectType, provider storage.DeleteInterceptorProvider) *interceptorRegistrationBuilder
func (*ServiceManagerBuilder) WithDeleteOnTxInterceptorProvider ¶ added in v0.7.3
func (smb *ServiceManagerBuilder) WithDeleteOnTxInterceptorProvider(objectType types.ObjectType, provider storage.DeleteOnTxInterceptorProvider) *interceptorRegistrationBuilder
func (*ServiceManagerBuilder) WithUpdateAroundTxInterceptorProvider ¶ added in v0.7.3
func (smb *ServiceManagerBuilder) WithUpdateAroundTxInterceptorProvider(objectType types.ObjectType, provider storage.UpdateAroundTxInterceptorProvider) *interceptorRegistrationBuilder
func (*ServiceManagerBuilder) WithUpdateInterceptorProvider ¶ added in v0.2.0
func (smb *ServiceManagerBuilder) WithUpdateInterceptorProvider(objectType types.ObjectType, provider storage.UpdateInterceptorProvider) *interceptorRegistrationBuilder
func (*ServiceManagerBuilder) WithUpdateOnTxInterceptorProvider ¶ added in v0.7.3
func (smb *ServiceManagerBuilder) WithUpdateOnTxInterceptorProvider(objectType types.ObjectType, provider storage.UpdateOnTxInterceptorProvider) *interceptorRegistrationBuilder