diff --git a/backend/internal/oauth/oauth2/par/service.go b/backend/internal/oauth/oauth2/par/service.go index 32548058d9..b6bda0a90b 100644 --- a/backend/internal/oauth/oauth2/par/service.go +++ b/backend/internal/oauth/oauth2/par/service.go @@ -144,6 +144,7 @@ func (s *parService) HandlePushedAuthorizationRequest( ClaimsLocales: params[oauth2const.RequestParamClaimsLocales], Nonce: params[oauth2const.RequestParamNonce], AcrValues: params[oauth2const.RequestParamAcrValues], + MaxAge: params[oauth2const.RequestParamMaxAge], DPoPJkt: resolveDPoPJkt(params[oauth2const.RequestParamDPoPJkt], dpopHeaderJkt), Prompt: params[oauth2const.RequestParamPrompt], } diff --git a/backend/internal/oauth/oauth2/par/service_test.go b/backend/internal/oauth/oauth2/par/service_test.go index 87dc588aeb..bffed7d566 100644 --- a/backend/internal/oauth/oauth2/par/service_test.go +++ b/backend/internal/oauth/oauth2/par/service_test.go @@ -447,6 +447,26 @@ func (s *ServiceTestSuite) TestHandlePAR_AcrValuesPropagated() { captured.OAuthParameters.AcrValues) } +func (s *ServiceTestSuite) TestHandlePAR_MaxAgePropagated() { + store := newParStoreInterfaceMock(s.T()) + var captured pushedAuthorizationRequest + store.EXPECT().Store(mock.Anything, mock.Anything, mock.Anything). + Run(func(_ context.Context, req pushedAuthorizationRequest, _ int64) { + captured = req + }).Return("test-uri", nil) + + svc := newPARService(store, s.newPermissiveResourceMock(), s.testCfg) + app := s.newTestApp() + params := s.newValidParams() + params[oauth2const.RequestParamMaxAge] = "1" + + resp, errCode, _ := svc.HandlePushedAuthorizationRequest(s.ctx, params, nil, app, "") + + assert.Empty(s.T(), errCode) + assert.NotNil(s.T(), resp) + assert.Equal(s.T(), "1", captured.OAuthParameters.MaxAge) +} + func (s *ServiceTestSuite) TestHandlePAR_DPoPHeaderJkt_PersistedOnRequest() { var captured pushedAuthorizationRequest store := newParStoreInterfaceMock(s.T())