| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -84,10 +84,9 @@ public function artifactResolutionService(Request $request): Response | |||
| 84 | 84 | throw new Exception("Message received on ArtifactResolutionService wasn't a ArtifactResolve request."); | |
| 85 | 85 | } | |
| 86 | 86 | ||
| 87 | - $issuer = $request->getIssuer(); | ||
| 87 | + $issuer = $request->getIssuer?->getValue(); | ||
| 88 | 88 | /** @psalm-assert \SimpleSAML\SAML2\XML\saml\Issuer $issuer */ | |
| 89 | 89 | Assert::notNull($issuer); | |
| 90 | - $issuer = $issuer->getValue(); | ||
| 91 | 90 | $spMetadata = $metadata->getMetaDataConfig($issuer, 'saml20-sp-remote'); | |
| 92 | 91 | $artifact = $request->getArtifact(); | |
| 93 | 92 | $responseData = $store->get('artifact', $artifact); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -18,6 +18,7 @@ | |||
| 18 | 18 | use SimpleSAML\SAML2\Exception\ArrayValidationException; | |
| 19 | 19 | use SimpleSAML\SAML2\XML\md\ContactPerson; | |
| 20 | 20 | use SimpleSAML\SAML2\XML\saml\{AttributeValue, Issuer, NameID, SubjectConfirmation, SubjectConfirmationData}; | |
| 21 | + use SimpleSAML\SAML2\XML\samlp\{Status, StatusCode, StatusMessage}; // Status | ||
| 21 | 22 | use SimpleSAML\XML\DOMDocumentFactory; | |
| 22 | 23 | use SimpleSAML\XMLSecurity\XML\ds\{X509Certificate, X509Data, KeyInfo}; | |
| 23 | 24 | use Symfony\Bridge\PsrHttpMessage\Factory\{HttpFoundationFactory, PsrHttpFactory}; | |
@@ -169,11 +170,20 @@ public static function handleAuthError(Error\Exception $exception, array $state) | |||
| 169 | 170 | $ar->setInResponseTo($requestId); | |
| 170 | 171 | $ar->setRelayState($relayState); | |
| 171 | 172 | ||
| 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 | + ); | ||
| 177 | 187 | $ar->setStatus($status); | |
| 178 | 188 | ||
| 179 | 189 | $statsData = [ | |
@@ -422,21 +432,23 @@ public static function receiveAuthnRequest(Request $request, IdP $idp): Response | |||
| 422 | 432 | $requestId = $request->getId(); | |
| 423 | 433 | $scoping = $request->getScoping(); | |
| 424 | 434 | ||
| 425 | - $ProxyCount = $scoping->getProxyCount(); | ||
| 435 | + $ProxyCount = $scoping?->getProxyCount(); | ||
| 426 | 436 | if ($ProxyCount !== null) { | |
| 427 | 437 | $ProxyCount--; | |
| 428 | 438 | } | |
| 429 | 439 | ||
| 430 | - if ($scoping->getIDPList() !== null) { | ||
| 431 | - $IDPList = ($scoping->getIDPList()->toArray())['IDPEntry']; | ||
| 440 | + $IDPList = $scoping?->getIDPList(); | ||
| 441 | + if ($IDPList !== null) { | ||
| 442 | + $IDPList = ($IDPList->toArray())['IDPEntry']; | ||
| 432 | 443 | } else { | |
| 433 | 444 | $IDPList = []; | |
| 434 | 445 | } | |
| 435 | 446 | ||
| 436 | - $RequesterID = $scoping->getRequesterID(); | ||
| 447 | + $RequesterID = $scoping?->getRequesterID(); | ||
| 437 | 448 | 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); | ||
| 440 | 452 | } | |
| 441 | 453 | } | |
| 442 | 454 | ||
@@ -449,8 +461,8 @@ public static function receiveAuthnRequest(Request $request, IdP $idp): Response | |||
| 449 | 461 | $authnContext = $request->getRequestedAuthnContext(); | |
| 450 | 462 | ||
| 451 | 463 | $nameIdPolicy = $request->getNameIdPolicy(); | |
| 452 | - $nameIDFormat = $nameIdPolicy->getFormat(); | ||
| 453 | - $allowCreate = $nameIdPolicy->getAllowCreate() ?? false; | ||
| 464 | + $nameIDFormat = $nameIdPolicy?->getFormat(); | ||
| 465 | + $allowCreate = $nameIdPolicy?->getAllowCreate() ?? false; | ||
| 454 | 466 | ||
| 455 | 467 | $idpInit = false; | |
| 456 | 468 | ||
@@ -599,10 +611,12 @@ public static function sendLogoutResponse(Request $request, IdP $idp, array $sta | |||
| 599 | 611 | ||
| 600 | 612 | if (isset($state['core:Failed']) && $state['core:Failed']) { | |
| 601 | 613 | $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 | + ))); | ||
| 606 | 620 | Logger::info('Sending logout response for partial logout to SP ' . var_export($spEntityId, true)); | |
| 607 | 621 | } else { | |
| 608 | 622 | $partial = false; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -10,12 +10,14 @@ | |||
| 10 | 10 | use SimpleSAML\Assert\Assert; | |
| 11 | 11 | use SimpleSAML\SAML2\{Assertion, EncryptedAssertion}; // Assertions | |
| 12 | 12 | use SimpleSAML\SAML2\{AuthnRequest, LogoutRequest, LogoutResponse, Response, StatusResponse}; // Messages | |
| 13 | + use SimpleSAML\SAML2\XML\samlp\{StatusCode, StatusMessage}; // Status | ||
| 13 | 14 | use SimpleSAML\SAML2\{Constants as C, SignedElement}; | |
| 14 | 15 | use SimpleSAML\SAML2\XML\saml\Issuer; | |
| 15 | 16 | use SimpleSAML\XMLSecurity\XML\ds\{KeyInfo, X509Certificate, X509Data}; | |
| 16 | 17 | ||
| 17 | 18 | use function array_key_exists; | |
| 18 | 19 | use function array_filter; | |
| 20 | + use function array_map; | ||
| 19 | 21 | use function array_pop; | |
| 20 | 22 | use function array_values; | |
| 21 | 23 | use function count; | |
@@ -459,7 +461,22 @@ private static function decryptAttributes( | |||
| 459 | 461 | public static function getResponseError(StatusResponse $response): \SimpleSAML\Module\saml\Error | |
| 460 | 462 | { | |
| 461 | 463 | $status = $response->getStatus(); | |
| 462 | - return new \SimpleSAML\Module\saml\Error($status['Code'], $status['SubCode'], $status['Message']); | ||
| 464 | + $subcode = null; | ||
| 465 | + if (!empty($status->getStatusCode()->getSubCodes())) { | ||
| 466 | + $subcodes = array_map( | ||
| 467 | + function (StatusCode $code) { | ||
| 468 | + return $code->getValue(); | ||
| 469 | + }, | ||
| 470 | + $status->getStatusCode()->getSubCodes(), | ||
| 471 | + ); | ||
| 472 | + $subcode = implode(' / ', $subcodes); | ||
| 473 | + } | ||
| 474 | + | ||
| 475 | + return new \SimpleSAML\Module\saml\Error( | ||
| 476 | + $status->getStatusCode()->getValue(), | ||
| 477 | + $subcode, | ||
| 478 | + $status->getStatusMessage()?->getContent(), | ||
| 479 | + ); | ||
| 463 | 480 | } | |
| 464 | 481 | ||
| 465 | 482 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments