Skip to content

Commit d46690b

Browse files
committed
Translate access token instead of id token to gRPC backend
Signed-off-by: Jason Parraga <[email protected]>
1 parent 25cfe16 commit d46690b

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

flyteadmin/auth/handlers.go

+14-5
Original file line numberDiff line numberDiff line change
@@ -353,8 +353,8 @@ func WithAuditFields(ctx context.Context, subject string, clientIds []string, to
353353
func GetHTTPRequestCookieToMetadataHandler(authCtx interfaces.AuthenticationContext) HTTPRequestToMetadataAnnotator {
354354
return func(ctx context.Context, request *http.Request) metadata.MD {
355355
// TODO: Improve error handling
356-
idToken, _, _, _ := authCtx.CookieManager().RetrieveTokenValues(ctx, request)
357-
if len(idToken) == 0 {
356+
idToken, accessToken, _, _ := authCtx.CookieManager().RetrieveTokenValues(ctx, request)
357+
if len(idToken) == 0 && len(accessToken) == 0 {
358358
// If no token was found in the cookies, look for an authorization header, starting with a potentially
359359
// custom header set in the Config object
360360
if len(authCtx.Options().HTTPAuthorizationHeader) > 0 {
@@ -372,9 +372,18 @@ func GetHTTPRequestCookieToMetadataHandler(authCtx interfaces.AuthenticationCont
372372
return nil
373373
}
374374

375-
// IDtoken is injected into grpc authorization metadata
376-
meta := metadata.MD{
377-
DefaultAuthorizationHeader: []string{fmt.Sprintf("%s %s", IDTokenScheme, idToken)},
375+
var meta metadata.MD
376+
377+
if len(accessToken) > 0 {
378+
// Access token is injected into grpc authorization metadata
379+
meta = metadata.MD{
380+
DefaultAuthorizationHeader: []string{fmt.Sprintf("%s %s", BearerScheme, accessToken)},
381+
}
382+
} else {
383+
// IDtoken is injected into grpc authorization metadata
384+
meta = metadata.MD{
385+
DefaultAuthorizationHeader: []string{fmt.Sprintf("%s %s", IDTokenScheme, idToken)},
386+
}
378387
}
379388

380389
userInfo, err := authCtx.CookieManager().RetrieveUserInfo(ctx, request)

flyteadmin/auth/handlers_test.go

+13-9
Original file line numberDiff line numberDiff line change
@@ -396,22 +396,26 @@ func TestGetHTTPRequestCookieToMetadataHandler(t *testing.T) {
396396
mockAuthCtx.OnCookieManager().Return(&cookieManager)
397397
mockAuthCtx.OnOptions().Return(&config.Config{})
398398
handler := GetHTTPRequestCookieToMetadataHandler(&mockAuthCtx)
399-
req, err := http.NewRequest("GET", "/api/v1/projects", nil)
400-
assert.NoError(t, err)
401399

402-
accessTokenCookie, err := NewSecureCookie(accessTokenCookieNameSplitFirst, "a.b.c", cookieManager.hashKey, cookieManager.blockKey, "localhost", http.SameSiteDefaultMode)
400+
accessTokenCookie1, err := NewSecureCookie(accessTokenCookieNameSplitFirst, "a.b.c", cookieManager.hashKey, cookieManager.blockKey, "localhost", http.SameSiteDefaultMode)
403401
assert.NoError(t, err)
404-
req.AddCookie(&accessTokenCookie)
405402

406-
accessTokenCookieSplit, err := NewSecureCookie(accessTokenCookieNameSplitSecond, ".d.e.f", cookieManager.hashKey, cookieManager.blockKey, "localhost", http.SameSiteDefaultMode)
403+
accessTokenCookie2, err := NewSecureCookie(accessTokenCookieNameSplitSecond, ".d.e.f", cookieManager.hashKey, cookieManager.blockKey, "localhost", http.SameSiteDefaultMode)
407404
assert.NoError(t, err)
408-
req.AddCookie(&accessTokenCookieSplit)
409405

410-
idCookie, err := NewSecureCookie(idTokenCookieName, "a.b.c.d.e.f", cookieManager.hashKey, cookieManager.blockKey, "localhost", http.SameSiteDefaultMode)
406+
idCookie, err := NewSecureCookie(idTokenCookieName, "x.y.z", cookieManager.hashKey, cookieManager.blockKey, "localhost", http.SameSiteDefaultMode)
411407
assert.NoError(t, err)
412-
req.AddCookie(&idCookie)
413408

414-
assert.Equal(t, "IDToken a.b.c.d.e.f", handler(ctx, req)["authorization"][0])
409+
t.Run("access token and ID token cookies present", func(t *testing.T) {
410+
req, err := http.NewRequest("GET", "/api/v1/projects", nil)
411+
assert.NoError(t, err)
412+
413+
req.AddCookie(&accessTokenCookie1)
414+
req.AddCookie(&accessTokenCookie2)
415+
req.AddCookie(&idCookie)
416+
417+
assert.Equal(t, "Bearer a.b.c.d.e.f", handler(ctx, req)["authorization"][0])
418+
})
415419
}
416420

417421
func TestGetHTTPMetadataTaggingHandler(t *testing.T) {

0 commit comments

Comments
 (0)