kuma

Форк
0
/
validator.go 
41 строка · 1.1 Кб
1
package issuer
2

3
import (
4
	"context"
5

6
	mesh_proto "github.com/kumahq/kuma/api/mesh/v1alpha1"
7
	core_tokens "github.com/kumahq/kuma/pkg/core/tokens"
8
)
9

10
type Validator interface {
11
	Validate(ctx context.Context, token core_tokens.Token, meshName string) (DataplaneIdentity, error)
12
}
13

14
type jwtValidator struct {
15
	validators func(string) (core_tokens.Validator, error)
16
}
17

18
var _ Validator = &jwtValidator{}
19

20
func NewValidator(validators func(string) (core_tokens.Validator, error)) Validator {
21
	return &jwtValidator{
22
		validators: validators,
23
	}
24
}
25

26
func (j *jwtValidator) Validate(ctx context.Context, token core_tokens.Token, meshName string) (DataplaneIdentity, error) {
27
	claims := &DataplaneClaims{}
28
	validators, err := j.validators(meshName)
29
	if err != nil {
30
		return DataplaneIdentity{}, err
31
	}
32
	if err := validators.ParseWithValidation(ctx, token, claims); err != nil {
33
		return DataplaneIdentity{}, err
34
	}
35
	return DataplaneIdentity{
36
		Name: claims.Name,
37
		Mesh: claims.Mesh,
38
		Tags: mesh_proto.MultiValueTagSetFrom(claims.Tags),
39
		Type: mesh_proto.ProxyType(claims.Type),
40
	}, nil
41
}
42

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.