package auth import ( "context" "github.com/hashicorp/vault/api" ) func init() { register(jwtMethod{}) } type jwtMethod struct{} func (jwtMethod) Name() string { return "jwt" } func (jwtMethod) DisplayName() string { return "JWT" } func (jwtMethod) DefaultMount() string { return "jwt" } func (jwtMethod) Fields() []Field { return []Field{ {Name: "role", Label: "Role", Kind: FieldText}, {Name: "jwt", Label: "JWT", Kind: FieldSecret, Required: true, EnvFallback: []string{"VAULT_AUTH_JWT"}}, } } func (jwtMethod) Login(ctx context.Context, c *api.Client, req Request) (*api.Secret, error) { mount := mountOf(req, "jwt") data := map[string]interface{}{"jwt": req.Creds.Get("jwt")} if role := req.Creds.Get("role"); role != "" { data["role"] = role } return loginWrite(ctx, c, mount, "login", data) }