@@ -116,7 +116,7 @@ discard block |
||
116 | 116 | // INVALID_USERID: The client authenticated a different user than the server expected. This error is returned when |
117 | 117 | // the application stated an authentication session specifying the userId and later during the authentication |
118 | 118 | // provides a different userId |
119 | - const AUTH_RESULT_INVALID_USERID = 5; |
|
119 | + const AUTH_RESULT_INVALID_USERID = 5; |
|
120 | 120 | |
121 | 121 | /** |
122 | 122 | * The default OCRA Suite (RFC 6287) to use for authentication in Tiqr |
@@ -240,7 +240,7 @@ discard block |
||
240 | 240 | * @param int $version The tiqr protocol version to use (defaults to the latest) |
241 | 241 | * @throws Exception |
242 | 242 | */ |
243 | - public function __construct(LoggerInterface $logger, array $options=array(), int $version = 2) |
|
243 | + public function __construct(LoggerInterface $logger, array $options = array(), int $version = 2) |
|
244 | 244 | { |
245 | 245 | $this->_options = $options; // Used to later get settings for Tiqr_Message_* |
246 | 246 | $this->logger = $logger; |
@@ -354,7 +354,7 @@ discard block |
||
354 | 354 | |
355 | 355 | $this->logger->info(sprintf('Creating and sending a %s push notification', $notificationType)); |
356 | 356 | $message->setId(time()); |
357 | - $message->setText("Please authenticate for " . $this->_name); |
|
357 | + $message->setText("Please authenticate for ".$this->_name); |
|
358 | 358 | $message->setAddress($notificationAddress); |
359 | 359 | $message->setCustomProperty('challenge', $this->_getChallengeUrl($sessionKey)); |
360 | 360 | $message->send(); |
@@ -400,13 +400,13 @@ discard block |
||
400 | 400 | * @return string The authentication sessionKey |
401 | 401 | * @throws Exception when starting the authentication session failed |
402 | 402 | */ |
403 | - public function startAuthenticationSession(string $userId="", string $sessionId="", string $spIdentifier=""): string |
|
403 | + public function startAuthenticationSession(string $userId = "", string $sessionId = "", string $spIdentifier = ""): string |
|
404 | 404 | { |
405 | - if ($sessionId=="") { |
|
405 | + if ($sessionId == "") { |
|
406 | 406 | $sessionId = session_id(); |
407 | 407 | } |
408 | 408 | |
409 | - if ($spIdentifier=="") { |
|
409 | + if ($spIdentifier == "") { |
|
410 | 410 | $spIdentifier = $this->_identifier; |
411 | 411 | } |
412 | 412 | |
@@ -415,11 +415,11 @@ discard block |
||
415 | 415 | |
416 | 416 | $data = array("sessionId"=>$sessionId, "challenge"=>$challenge, "spIdentifier" => $spIdentifier); |
417 | 417 | |
418 | - if ($userId!="") { |
|
418 | + if ($userId != "") { |
|
419 | 419 | $data["userId"] = $userId; |
420 | 420 | } |
421 | 421 | |
422 | - $this->_stateStorage->setValue(self::PREFIX_CHALLENGE . $sessionKey, $data, self::CHALLENGE_EXPIRE); |
|
422 | + $this->_stateStorage->setValue(self::PREFIX_CHALLENGE.$sessionKey, $data, self::CHALLENGE_EXPIRE); |
|
423 | 423 | |
424 | 424 | return $sessionKey; |
425 | 425 | } |
@@ -439,9 +439,9 @@ discard block |
||
439 | 439 | * @return String The enrollment key |
440 | 440 | * @throws Exception when start the enrollement session failed |
441 | 441 | */ |
442 | - public function startEnrollmentSession(string $userId, string $displayName, string $sessionId=""): string |
|
442 | + public function startEnrollmentSession(string $userId, string $displayName, string $sessionId = ""): string |
|
443 | 443 | { |
444 | - if ($sessionId=="") { |
|
444 | + if ($sessionId == "") { |
|
445 | 445 | $sessionId = session_id(); |
446 | 446 | } |
447 | 447 | $enrollmentKey = $this->_uniqueSessionKey(); |
@@ -450,7 +450,7 @@ discard block |
||
450 | 450 | "displayName" => $displayName, |
451 | 451 | "sessionId" => $sessionId |
452 | 452 | ]; |
453 | - $this->_stateStorage->setValue(self::PREFIX_ENROLLMENT . $enrollmentKey, $data, self::ENROLLMENT_EXPIRE); |
|
453 | + $this->_stateStorage->setValue(self::PREFIX_ENROLLMENT.$enrollmentKey, $data, self::ENROLLMENT_EXPIRE); |
|
454 | 454 | $this->_setEnrollmentStatus($sessionId, self::ENROLLMENT_STATUS_INITIALIZED); |
455 | 455 | |
456 | 456 | return $enrollmentKey; |
@@ -461,9 +461,9 @@ discard block |
||
461 | 461 | * @param string $sessionId The application's session identifier (defaults to php session) |
462 | 462 | * @throws Exception when resetting the session failed |
463 | 463 | */ |
464 | - public function resetEnrollmentSession(string $sessionId=""): void |
|
464 | + public function resetEnrollmentSession(string $sessionId = ""): void |
|
465 | 465 | { |
466 | - if ($sessionId=="") { |
|
466 | + if ($sessionId == "") { |
|
467 | 467 | $sessionId = session_id(); |
468 | 468 | } |
469 | 469 | |
@@ -498,9 +498,9 @@ discard block |
||
498 | 498 | * |
499 | 499 | * @throws Exception when an error communicating with the state storage backend was detected |
500 | 500 | */ |
501 | - public function getEnrollmentStatus(string $sessionId=""): int |
|
501 | + public function getEnrollmentStatus(string $sessionId = ""): int |
|
502 | 502 | { |
503 | - if ($sessionId=="") { |
|
503 | + if ($sessionId == "") { |
|
504 | 504 | $sessionId = session_id(); |
505 | 505 | } |
506 | 506 | $status = $this->_stateStorage->getValue(self::PREFIX_ENROLLMENT_STATUS.$sessionId); |
@@ -557,7 +557,7 @@ discard block |
||
557 | 557 | */ |
558 | 558 | public function getEnrollmentMetadata(string $enrollmentKey, string $authenticationUrl, string $enrollmentUrl): array |
559 | 559 | { |
560 | - $data = $this->_stateStorage->getValue(self::PREFIX_ENROLLMENT . $enrollmentKey); |
|
560 | + $data = $this->_stateStorage->getValue(self::PREFIX_ENROLLMENT.$enrollmentKey); |
|
561 | 561 | if (!is_array($data)) { |
562 | 562 | $this->logger->error('Unable to find enrollment metadata in state storage'); |
563 | 563 | throw new Exception('Unable to find enrollment metadata in state storage'); |
@@ -576,7 +576,7 @@ discard block |
||
576 | 576 | array("identifier" =>$data["userId"], |
577 | 577 | "displayName"=>$data["displayName"])); |
578 | 578 | |
579 | - $this->_stateStorage->unsetValue(self::PREFIX_ENROLLMENT . $enrollmentKey); |
|
579 | + $this->_stateStorage->unsetValue(self::PREFIX_ENROLLMENT.$enrollmentKey); |
|
580 | 580 | |
581 | 581 | $this->_setEnrollmentStatus($data["sessionId"], self::ENROLLMENT_STATUS_RETRIEVED); |
582 | 582 | return $metadata; |
@@ -604,7 +604,7 @@ discard block |
||
604 | 604 | */ |
605 | 605 | public function getEnrollmentSecret(string $enrollmentKey): string |
606 | 606 | { |
607 | - $data = $this->_stateStorage->getValue(self::PREFIX_ENROLLMENT . $enrollmentKey); |
|
607 | + $data = $this->_stateStorage->getValue(self::PREFIX_ENROLLMENT.$enrollmentKey); |
|
608 | 608 | if (!is_array($data)) { |
609 | 609 | $this->logger->error('getEnrollmentSecret: enrollment key not found'); |
610 | 610 | throw new RuntimeException('enrollment key not found'); |
@@ -620,7 +620,7 @@ discard block |
||
620 | 620 | ]; |
621 | 621 | $enrollmentSecret = $this->_uniqueSessionKey(); |
622 | 622 | $this->_stateStorage->setValue( |
623 | - self::PREFIX_ENROLLMENT_SECRET . $enrollmentSecret, |
|
623 | + self::PREFIX_ENROLLMENT_SECRET.$enrollmentSecret, |
|
624 | 624 | $enrollmentData, |
625 | 625 | self::ENROLLMENT_EXPIRE |
626 | 626 | ); |
@@ -648,11 +648,11 @@ discard block |
||
648 | 648 | public function validateEnrollmentSecret(string $enrollmentSecret): string |
649 | 649 | { |
650 | 650 | try { |
651 | - $data = $this->_stateStorage->getValue(self::PREFIX_ENROLLMENT_SECRET . $enrollmentSecret); |
|
651 | + $data = $this->_stateStorage->getValue(self::PREFIX_ENROLLMENT_SECRET.$enrollmentSecret); |
|
652 | 652 | if (NULL === $data) { |
653 | 653 | throw new RuntimeException('Enrollment secret not found'); |
654 | 654 | } |
655 | - if ( !is_array($data) || !is_string($data["userId"] ?? NULL)) { |
|
655 | + if (!is_array($data) || !is_string($data["userId"] ?? NULL)) { |
|
656 | 656 | throw new RuntimeException('Invalid enrollment data'); |
657 | 657 | } |
658 | 658 | |
@@ -682,17 +682,17 @@ discard block |
||
682 | 682 | public function finalizeEnrollment(string $enrollmentSecret): bool |
683 | 683 | { |
684 | 684 | try { |
685 | - $data = $this->_stateStorage->getValue(self::PREFIX_ENROLLMENT_SECRET . $enrollmentSecret); |
|
685 | + $data = $this->_stateStorage->getValue(self::PREFIX_ENROLLMENT_SECRET.$enrollmentSecret); |
|
686 | 686 | if (NULL === $data) { |
687 | 687 | throw new RuntimeException('Enrollment secret not found'); |
688 | 688 | } |
689 | 689 | if (is_array($data)) { |
690 | 690 | // Enrollment is finalized, destroy our session data. |
691 | - $this->_stateStorage->unsetValue(self::PREFIX_ENROLLMENT_SECRET . $enrollmentSecret); |
|
691 | + $this->_stateStorage->unsetValue(self::PREFIX_ENROLLMENT_SECRET.$enrollmentSecret); |
|
692 | 692 | $this->_setEnrollmentStatus($data["sessionId"], self::ENROLLMENT_STATUS_FINALIZED); |
693 | 693 | } else { |
694 | 694 | $this->logger->error( |
695 | - 'Enrollment status is not finalized, enrollmentsecret was not found in state storage. ' . |
|
695 | + 'Enrollment status is not finalized, enrollmentsecret was not found in state storage. '. |
|
696 | 696 | 'Warning! the method will still return "true" as a result.' |
697 | 697 | ); |
698 | 698 | } |
@@ -740,7 +740,7 @@ discard block |
||
740 | 740 | public function authenticate(string $userId, string $userSecret, string $sessionKey, string $response): int |
741 | 741 | { |
742 | 742 | try { |
743 | - $state = $this->_stateStorage->getValue(self::PREFIX_CHALLENGE . $sessionKey); |
|
743 | + $state = $this->_stateStorage->getValue(self::PREFIX_CHALLENGE.$sessionKey); |
|
744 | 744 | if (is_null($state)) { |
745 | 745 | $this->logger->notice('The auth challenge could not be found in the state storage'); |
746 | 746 | return self::AUTH_RESULT_INVALID_CHALLENGE; |
@@ -750,9 +750,9 @@ discard block |
||
750 | 750 | throw $e; |
751 | 751 | } |
752 | 752 | |
753 | - $sessionId = $state["sessionId"] ?? NULL; // Application's sessionId |
|
754 | - $challenge = $state["challenge"] ?? NULL; // The challenge we sent to the Tiqr client |
|
755 | - if (!is_string($sessionId) || (!is_string($challenge)) ) { |
|
753 | + $sessionId = $state["sessionId"] ?? NULL; // Application's sessionId |
|
754 | + $challenge = $state["challenge"] ?? NULL; // The challenge we sent to the Tiqr client |
|
755 | + if (!is_string($sessionId) || (!is_string($challenge))) { |
|
756 | 756 | throw new RuntimeException('Invalid state for state storage'); |
757 | 757 | } |
758 | 758 | |
@@ -761,7 +761,7 @@ discard block |
||
761 | 761 | $challengeUserId = $state["userId"] ?? NULL; |
762 | 762 | |
763 | 763 | // If the application requested a specific userId, verify that that is that userId that we're now authenticating |
764 | - if ($challengeUserId!==NULL && ($userId !== $challengeUserId)) { |
|
764 | + if ($challengeUserId !== NULL && ($userId !== $challengeUserId)) { |
|
765 | 765 | $this->logger->error( |
766 | 766 | sprintf('Authentication failed: the requested userId "%s" does not match userId "%s" that is being authenticated', |
767 | 767 | $challengeUserId, $userId) |
@@ -778,7 +778,7 @@ discard block |
||
778 | 778 | |
779 | 779 | if ($equal) { |
780 | 780 | // Set application session as authenticated |
781 | - $this->_stateStorage->setValue(self::PREFIX_AUTHENTICATED . $sessionId, $userId, self::LOGIN_EXPIRE); |
|
781 | + $this->_stateStorage->setValue(self::PREFIX_AUTHENTICATED.$sessionId, $userId, self::LOGIN_EXPIRE); |
|
782 | 782 | $this->logger->notice(sprintf('Authenticated user "%s" in session "%s"', $userId, $sessionId)); |
783 | 783 | |
784 | 784 | // Cleanup challenge |
@@ -787,7 +787,7 @@ discard block |
||
787 | 787 | // Cleaning up only after successful authentication enables the user to retry authentication after e.g. an |
788 | 788 | // invalid response |
789 | 789 | try { |
790 | - $this->_stateStorage->unsetValue(self::PREFIX_CHALLENGE . $sessionKey); // May throw |
|
790 | + $this->_stateStorage->unsetValue(self::PREFIX_CHALLENGE.$sessionKey); // May throw |
|
791 | 791 | } catch (Exception $e) { |
792 | 792 | // Only log error |
793 | 793 | $this->logger->warning('Could not delete authentication session key', array('error' => $e)); |
@@ -809,9 +809,9 @@ discard block |
||
809 | 809 | * |
810 | 810 | * @throws Exception when there was an error communicating with the storage backed |
811 | 811 | */ |
812 | - public function logout(string $sessionId=""): void |
|
812 | + public function logout(string $sessionId = ""): void |
|
813 | 813 | { |
814 | - if ($sessionId=="") { |
|
814 | + if ($sessionId == "") { |
|
815 | 815 | $sessionId = session_id(); |
816 | 816 | } |
817 | 817 | |
@@ -851,9 +851,9 @@ discard block |
||
851 | 851 | * |
852 | 852 | * Does not throw |
853 | 853 | */ |
854 | - public function getAuthenticatedUser(string $sessionId=""): ?string |
|
854 | + public function getAuthenticatedUser(string $sessionId = ""): ?string |
|
855 | 855 | { |
856 | - if ($sessionId=="") { |
|
856 | + if ($sessionId == "") { |
|
857 | 857 | $this->logger->debug('Using the PHP session id, as no session id was provided'); |
858 | 858 | $sessionId = session_id(); |
859 | 859 | } |
@@ -882,7 +882,7 @@ discard block |
||
882 | 882 | // We probably just generated the challenge and stored it in the StateStorage |
883 | 883 | // We can save a roundtrip to the storage backend here by reusing this information |
884 | 884 | |
885 | - $state = $this->_stateStorage->getValue(self::PREFIX_CHALLENGE . $sessionKey); |
|
885 | + $state = $this->_stateStorage->getValue(self::PREFIX_CHALLENGE.$sessionKey); |
|
886 | 886 | if (is_null($state)) { |
887 | 887 | $this->logger->error( |
888 | 888 | sprintf( |
@@ -897,22 +897,22 @@ discard block |
||
897 | 897 | $challenge = $state["challenge"] ?? ''; |
898 | 898 | $spIdentifier = $state["spIdentifier"] ?? ''; |
899 | 899 | |
900 | - if ( (strpos($this->_protocolAuth, 'https://') === 0) || (strpos($this->_protocolAuth, 'http://') === 0) ) { |
|
900 | + if ((strpos($this->_protocolAuth, 'https://') === 0) || (strpos($this->_protocolAuth, 'http://') === 0)) { |
|
901 | 901 | // Create universal Link |
902 | - $parameters=array(); |
|
902 | + $parameters = array(); |
|
903 | 903 | if (!is_null($userId)) { |
904 | - $parameters[]='u='.urlencode($userId); |
|
904 | + $parameters[] = 'u='.urlencode($userId); |
|
905 | 905 | } |
906 | - $parameters[]='s='.urlencode($sessionKey); |
|
907 | - $parameters[]='q='.urlencode($challenge); |
|
908 | - $parameters[]='i='.urlencode($this->getIdentifier()); |
|
909 | - $parameters[]='v='.urlencode($this->_protocolVersion); |
|
906 | + $parameters[] = 's='.urlencode($sessionKey); |
|
907 | + $parameters[] = 'q='.urlencode($challenge); |
|
908 | + $parameters[] = 'i='.urlencode($this->getIdentifier()); |
|
909 | + $parameters[] = 'v='.urlencode($this->_protocolVersion); |
|
910 | 910 | return $this->_protocolAuth.'?'.implode('&', $parameters); |
911 | 911 | } |
912 | 912 | |
913 | 913 | // Create custom URL scheme |
914 | 914 | // Last bit is the spIdentifier |
915 | - return $this->_protocolAuth."://".(!is_null($userId)?urlencode($userId).'@':'').$this->getIdentifier()."/".$sessionKey."/".$challenge."/".urlencode($spIdentifier)."/".$this->_protocolVersion; |
|
915 | + return $this->_protocolAuth."://".(!is_null($userId) ?urlencode($userId).'@' : '').$this->getIdentifier()."/".$sessionKey."/".$challenge."/".urlencode($spIdentifier)."/".$this->_protocolVersion; |
|
916 | 916 | } |
917 | 917 | |
918 | 918 | /** |
@@ -923,7 +923,7 @@ discard block |
||
923 | 923 | { |
924 | 924 | // The are two formats see: https://tiqr.org/technical/protocol/ |
925 | 925 | |
926 | - if ( (strpos($this->_protocolEnroll, 'https://') === 0) || (strpos($this->_protocolEnroll, 'http://') === 0) ) { |
|
926 | + if ((strpos($this->_protocolEnroll, 'https://') === 0) || (strpos($this->_protocolEnroll, 'http://') === 0)) { |
|
927 | 927 | // Create universal Link |
928 | 928 | return $this->_protocolEnroll.'?metadata='.urlencode($metadataUrl); |
929 | 929 | } |
@@ -942,7 +942,7 @@ discard block |
||
942 | 942 | protected function _uniqueSessionKey(): string |
943 | 943 | { |
944 | 944 | |
945 | - return bin2hex( Tiqr_Random::randomBytes(self::SESSION_KEY_LENGTH_BYTES) ); |
|
945 | + return bin2hex(Tiqr_Random::randomBytes(self::SESSION_KEY_LENGTH_BYTES)); |
|
946 | 946 | } |
947 | 947 | |
948 | 948 | /** |