authorize: add name claim (#3238)

This commit is contained in:
Caleb Doxsey 2022-04-05 12:08:00 -06:00 committed by GitHub
parent 6914fb8abf
commit d299b42509
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View file

@ -10,6 +10,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/structpb"
"github.com/pomerium/pomerium/config" "github.com/pomerium/pomerium/config"
"github.com/pomerium/pomerium/pkg/cryptutil" "github.com/pomerium/pomerium/pkg/cryptutil"
@ -81,7 +82,11 @@ func TestHeadersEvaluator(t *testing.T) {
output, err := eval(t, output, err := eval(t,
[]proto.Message{ []proto.Message{
&session.Session{Id: "s1", ImpersonateSessionId: proto.String("s2"), UserId: "u1"}, &session.Session{Id: "s1", ImpersonateSessionId: proto.String("s2"), UserId: "u1"},
&session.Session{Id: "s2", UserId: "u2"}, &session.Session{Id: "s2", UserId: "u2", Claims: map[string]*structpb.ListValue{
"name": {Values: []*structpb.Value{
structpb.NewStringValue("n1"),
}},
}},
}, },
&HeadersRequest{ &HeadersRequest{
FromAudience: "from.example.com", FromAudience: "from.example.com",
@ -105,6 +110,7 @@ func TestHeadersEvaluator(t *testing.T) {
assert.Equal(t, "s1", claims["sid"], "should set session id to input session id") assert.Equal(t, "s1", claims["sid"], "should set session id to input session id")
assert.Equal(t, "u2", claims["sub"], "should set subject to user id") assert.Equal(t, "u2", claims["sub"], "should set subject to user id")
assert.Equal(t, "u2", claims["user"], "should set user to user id") assert.Equal(t, "u2", claims["user"], "should set user to user id")
assert.Equal(t, "n1", claims["name"], "should set name")
}) })
t.Run("access token", func(t *testing.T) { t.Run("access token", func(t *testing.T) {

View file

@ -142,6 +142,14 @@ jwt_payload_groups = v {
true true
} }
jwt_payload_name = v {
v = get_header_string_value(session.claims.name)
} else = v {
v = get_header_string_value(user.claims.name)
} else = "" {
true
}
# the session id is always set to the input session id, even if impersonating # the session id is always set to the input session id, even if impersonating
jwt_payload_sid := input.session.id jwt_payload_sid := input.session.id
@ -156,6 +164,7 @@ base_jwt_claims := [
["email", jwt_payload_email], ["email", jwt_payload_email],
["groups", jwt_payload_groups], ["groups", jwt_payload_groups],
["sid", jwt_payload_sid], ["sid", jwt_payload_sid],
["name", jwt_payload_name],
] ]
additional_jwt_claims := [[k, v] | additional_jwt_claims := [[k, v] |