mirror of
https://github.com/linka-cloud/grpc.git
synced 2024-12-26 19:00:44 +00:00
59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package auth
|
|
|
|
import (
|
|
grpc_auth "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/auth"
|
|
)
|
|
|
|
type Option func(o *options)
|
|
|
|
// WithMethods change the behaviour to not protect by default, it takes a list of fully qualified method names to protect, e.g. /helloworld.Greeter/SayHello
|
|
func WithMethods(methods ...string) Option {
|
|
return func(o *options) {
|
|
o.methods = append(o.methods, methods...)
|
|
}
|
|
}
|
|
|
|
// WithIgnoredMethods bypass auth for the given methods, it takes a list of fully qualified method name, e.g. /helloworld.Greeter/SayHello
|
|
func WithIgnoredMethods(methods ...string) Option {
|
|
return func(o *options) {
|
|
o.ignoredMethods = append(o.ignoredMethods, methods...)
|
|
}
|
|
}
|
|
|
|
func WithBasicValidators(validators ...BasicValidator) Option {
|
|
var authFns []grpc_auth.AuthFunc
|
|
for _, v := range validators {
|
|
authFns = append(authFns, makeBasicAuthFunc(v))
|
|
}
|
|
return func(o *options) {
|
|
o.authFns = append(o.authFns, authFns...)
|
|
}
|
|
}
|
|
|
|
func WithTokenValidators(validators ...TokenValidator) Option {
|
|
var authFns []grpc_auth.AuthFunc
|
|
for _, v := range validators {
|
|
authFns = append(authFns, makeTokenAuthFunc(v))
|
|
}
|
|
return func(o *options) {
|
|
o.authFns = append(o.authFns, authFns...)
|
|
}
|
|
}
|
|
|
|
func WithX509Validators(validators ...X509Validator) Option {
|
|
var authFns []grpc_auth.AuthFunc
|
|
for _, v := range validators {
|
|
authFns = append(authFns, makeX509AuthFunc(v))
|
|
}
|
|
return func(o *options) {
|
|
o.authFns = append(o.authFns, authFns...)
|
|
}
|
|
}
|
|
|
|
type options struct {
|
|
methods []string
|
|
ignoredMethods []string
|
|
|
|
authFns []grpc_auth.AuthFunc
|
|
}
|