1818use SimpleSAML \SAML2 \Exception \ArrayValidationException ;
1919use SimpleSAML \SAML2 \XML \md \ContactPerson ;
2020use SimpleSAML \SAML2 \XML \saml \{AttributeValue , Issuer , NameID , SubjectConfirmation , SubjectConfirmationData };
21+ use SimpleSAML \SAML2 \XML \samlp \{Status , StatusCode , StatusMessage }; // Status
2122use SimpleSAML \XML \DOMDocumentFactory ;
2223use SimpleSAML \XMLSecurity \XML \ds \{X509Certificate , X509Data , KeyInfo };
2324use Symfony \Bridge \PsrHttpMessage \Factory \{HttpFoundationFactory , PsrHttpFactory };
@@ -169,11 +170,20 @@ public static function handleAuthError(Error\Exception $exception, array $state)
169170 $ ar ->setInResponseTo ($ requestId );
170171 $ ar ->setRelayState ($ relayState );
171172
172- $ status = [
173- 'Code ' => $ error ->getStatus (),
174- 'SubCode ' => $ error ->getSubStatus (),
175- 'Message ' => $ error ->getStatusMessage (),
176- ];
173+ $ subStatus = $ error ->getSubStatus ();
174+ if ($ subStatus !== null ) {
175+ $ subStatus = new StatusCode ($ subStatus );
176+ }
177+
178+ $ statusMessage = $ error ->getStatusMessage ();
179+ if ($ statusMessage !== null ) {
180+ $ statusMessage = new StatusMessage ($ statusMessage );
181+ }
182+
183+ $ status = new Status (
184+ new StatusCode ($ error ->getStatus (), $ subStatus ? [$ subStatus ] : []),
185+ $ statusMessage ,
186+ );
177187 $ ar ->setStatus ($ status );
178188
179189 $ statsData = [
@@ -422,21 +432,23 @@ public static function receiveAuthnRequest(Request $request, IdP $idp): Response
422432 $ requestId = $ request ->getId ();
423433 $ scoping = $ request ->getScoping ();
424434
425- $ ProxyCount = $ scoping ->getProxyCount ();
435+ $ ProxyCount = $ scoping? ->getProxyCount();
426436 if ($ ProxyCount !== null ) {
427437 $ ProxyCount --;
428438 }
429439
430- if ($ scoping ->getIDPList () !== null ) {
431- $ IDPList = ($ scoping ->getIDPList ()->toArray ())['IDPEntry ' ];
440+ $ IDPList = $ scoping ?->getIDPList();
441+ if ($ IDPList !== null ) {
442+ $ IDPList = ($ IDPList ->toArray ())['IDPEntry ' ];
432443 } else {
433444 $ IDPList = [];
434445 }
435446
436- $ RequesterID = $ scoping ->getRequesterID ();
447+ $ RequesterID = $ scoping? ->getRequesterID();
437448 if ($ RequesterID !== null ) {
438- foreach ($ scoping ->getRequesterID () as $ k => $ rid ) {
439- $ RequesterID [$ k ] = array_pop ($ rid ->toArray ());
449+ foreach ($ requesterID as $ k => $ rid ) {
450+ $ rid = $ rid ->toArray ();
451+ $ RequesterID [$ k ] = array_pop ($ rid );
440452 }
441453 }
442454
@@ -449,8 +461,8 @@ public static function receiveAuthnRequest(Request $request, IdP $idp): Response
449461 $ authnContext = $ request ->getRequestedAuthnContext ();
450462
451463 $ nameIdPolicy = $ request ->getNameIdPolicy ();
452- $ nameIDFormat = $ nameIdPolicy ->getFormat ();
453- $ allowCreate = $ nameIdPolicy ->getAllowCreate () ?? false ;
464+ $ nameIDFormat = $ nameIdPolicy? ->getFormat();
465+ $ allowCreate = $ nameIdPolicy? ->getAllowCreate() ?? false ;
454466
455467 $ idpInit = false ;
456468
@@ -599,10 +611,12 @@ public static function sendLogoutResponse(Request $request, IdP $idp, array $sta
599611
600612 if (isset ($ state ['core:Failed ' ]) && $ state ['core:Failed ' ]) {
601613 $ partial = true ;
602- $ lr ->setStatus ([
603- 'Code ' => C::STATUS_SUCCESS ,
604- 'SubCode ' => C::STATUS_PARTIAL_LOGOUT ,
605- ]);
614+ $ lr ->setStatus (new Status (new StatusCode (
615+ C::STATUS_SUCCESS ,
616+ [
617+ new StatusCode (C::STATUS_PARTIAL_LOGOUT ),
618+ ],
619+ )));
606620 Logger::info ('Sending logout response for partial logout to SP ' . var_export ($ spEntityId , true ));
607621 } else {
608622 $ partial = false ;
0 commit comments