5252use SimpleSAML \Module \oidc \Server \RequestRules \Rules \CodeChallengeMethodRule ;
5353use SimpleSAML \Module \oidc \Server \RequestRules \Rules \CodeChallengeRule ;
5454use SimpleSAML \Module \oidc \Server \RequestRules \Rules \CodeVerifierRule ;
55- use SimpleSAML \Module \oidc \Server \RequestRules \Rules \IssuerStateRule ;
5655use SimpleSAML \Module \oidc \Server \RequestRules \Rules \MaxAgeRule ;
5756use SimpleSAML \Module \oidc \Server \RequestRules \Rules \PromptRule ;
5857use SimpleSAML \Module \oidc \Server \RequestRules \Rules \RequestedClaimsRule ;
6160use SimpleSAML \Module \oidc \Server \RequestRules \Rules \ScopeOfflineAccessRule ;
6261use SimpleSAML \Module \oidc \Server \RequestRules \Rules \ScopeRule ;
6362use SimpleSAML \Module \oidc \Server \RequestRules \Rules \StateRule ;
63+ use SimpleSAML \Module \oidc \Server \RequestRules \Rules \IssuerStateRule ;
6464use SimpleSAML \Module \oidc \Server \RequestTypes \AuthorizationRequest ;
6565use SimpleSAML \Module \oidc \Server \ResponseTypes \Interfaces \AcrResponseTypeInterface ;
6666use SimpleSAML \Module \oidc \Server \ResponseTypes \Interfaces \AuthTimeResponseTypeInterface ;
@@ -347,6 +347,7 @@ protected function issueOidcAuthCode(
347347 $ userIdentifier ,
348348 $ redirectUri ,
349349 $ authorizationRequest ->getNonce (),
350+ $ authorizationRequest ->getIssuerState (),
350351 flowTypeEnum: $ flowType ,
351352 authorizationDetails: $ authorizationRequest ->getAuthorizationDetails (),
352353 boundClientId: $ authorizationRequest ->getBoundClientId (),
@@ -603,6 +604,12 @@ public function respondToAccessTokenRequest(
603604 json_decode (json_encode ($ authCodePayload ->claims , JSON_THROW_ON_ERROR ), true , 512 , JSON_THROW_ON_ERROR )
604605 : null ;
605606
607+ $ auth_code_id = $ authCodePayload ->auth_code_id ;
608+ $ authCodeEntity = $ this ->authCodeRepository ->findById ($ auth_code_id );
609+
610+ /** @var string $issuerState */
611+ $ issuerState = $ authCodeEntity ->getIssuerState ();
612+
606613 // Issue and persist new access token
607614 $ accessToken = $ this ->issueAccessToken (
608615 $ accessTokenTTL ,
@@ -615,6 +622,7 @@ public function respondToAccessTokenRequest(
615622 $ storedAuthCodeEntity ->getAuthorizationDetails (),
616623 $ storedAuthCodeEntity ->getBoundClientId (),
617624 $ storedAuthCodeEntity ->getBoundRedirectUri (),
625+ $ issuerState ,
618626 );
619627 $ this ->getEmitter ()->emit (new RequestEvent (RequestEvent::ACCESS_TOKEN_ISSUED , $ request ));
620628 $ responseType ->setAccessToken ($ accessToken );
@@ -759,6 +767,8 @@ public function validateAuthorizationRequestWithRequestRules(
759767 $ redirectUri = $ resultBag ->getOrFail (ClientRedirectUriRule::class)->getValue ();
760768 /** @var string|null $state */
761769 $ state = $ resultBag ->getOrFail (StateRule::class)->getValue ();
770+ /** @var string|null $issuer_state */
771+ $ issuer_state = $ resultBag ->getOrFail (IssuerStateRule::class)->getValue ();
762772 /** @var \SimpleSAML\Module\oidc\Entities\Interfaces\ClientEntityInterface $client */
763773 $ client = $ resultBag ->getOrFail (ClientRule::class)->getValue ();
764774
@@ -881,9 +891,9 @@ public function validateAuthorizationRequestWithRequestRules(
881891 $ authorizationRequest ->setFlowType ($ flowType );
882892
883893 /** @var ?string $issuerState */
884- $ issuerState = $ resultBag -> get (IssuerStateRule::class)?->getValue();
885- $ this -> loggerService -> debug ( ' AuthCodeGrant: Issuer state: ' , [ ' issuerState ' => $ issuerState ] );
886- $ authorizationRequest -> setIssuerState ( $ issuerState );
894+ if ( $ issuer_state !== null ) {
895+ $ authorizationRequest -> setIssuerState ( $ issuer_state );
896+ }
887897
888898 /** @var ?array $authorizationDetails */
889899 $ authorizationDetails = $ resultBag ->get (AuthorizationDetailsRule::class)?->getValue();
0 commit comments