| @@ 116-142 (lines=27) @@ | ||
| 113 | * @param AssertionAdapter $translatedAssertion |
|
| 114 | * @return string |
|
| 115 | */ |
|
| 116 | private function getInstitution(AssertionAdapter $translatedAssertion) |
|
| 117 | { |
|
| 118 | $institutions = $translatedAssertion->getAttributeValue('schacHomeOrganization'); |
|
| 119 | ||
| 120 | if (empty($institutions)) { |
|
| 121 | throw new BadCredentialsException( |
|
| 122 | 'No schacHomeOrganization provided' |
|
| 123 | ); |
|
| 124 | } |
|
| 125 | ||
| 126 | if (count($institutions) > 1) { |
|
| 127 | throw new BadCredentialsException( |
|
| 128 | 'Multiple schacHomeOrganizations provided in SAML Assertion' |
|
| 129 | ); |
|
| 130 | } |
|
| 131 | ||
| 132 | $institution = $institutions[0]; |
|
| 133 | ||
| 134 | if (!is_string($institution)) { |
|
| 135 | $this->logger->warning('Received invalid schacHomeOrganization', ['schacHomeOrganizationType' => gettype($institution)]); |
|
| 136 | throw new BadCredentialsException( |
|
| 137 | 'schacHomeOrganization is not a string' |
|
| 138 | ); |
|
| 139 | } |
|
| 140 | ||
| 141 | return $institution; |
|
| 142 | } |
|
| 143 | ||
| 144 | /** |
|
| 145 | * @param AssertionAdapter $translatedAssertion |
|
| @@ 148-174 (lines=27) @@ | ||
| 145 | * @param AssertionAdapter $translatedAssertion |
|
| 146 | * @return string |
|
| 147 | */ |
|
| 148 | private function getEmail(AssertionAdapter $translatedAssertion) |
|
| 149 | { |
|
| 150 | $emails = $translatedAssertion->getAttributeValue('mail'); |
|
| 151 | ||
| 152 | if (empty($emails)) { |
|
| 153 | throw new BadCredentialsException( |
|
| 154 | 'No schacHomeOrganization provided' |
|
| 155 | ); |
|
| 156 | } |
|
| 157 | ||
| 158 | if (count($emails) > 1) { |
|
| 159 | throw new BadCredentialsException( |
|
| 160 | 'Multiple email values provided in SAML Assertion' |
|
| 161 | ); |
|
| 162 | } |
|
| 163 | ||
| 164 | $email = $emails[0]; |
|
| 165 | ||
| 166 | if (!is_string($email)) { |
|
| 167 | $this->logger->warning('Received invalid email', ['emailType' => gettype($email)]); |
|
| 168 | throw new BadCredentialsException( |
|
| 169 | 'email is not a string' |
|
| 170 | ); |
|
| 171 | } |
|
| 172 | ||
| 173 | return $email; |
|
| 174 | } |
|
| 175 | ||
| 176 | /** |
|
| 177 | * @param AssertionAdapter $translatedAssertion |
|
| @@ 180-206 (lines=27) @@ | ||
| 177 | * @param AssertionAdapter $translatedAssertion |
|
| 178 | * @return string |
|
| 179 | */ |
|
| 180 | private function getCommonName(AssertionAdapter $translatedAssertion) |
|
| 181 | { |
|
| 182 | $commonNames = $translatedAssertion->getAttributeValue('commonName'); |
|
| 183 | ||
| 184 | if (empty($commonNames)) { |
|
| 185 | throw new BadCredentialsException( |
|
| 186 | 'No commonName provided' |
|
| 187 | ); |
|
| 188 | } |
|
| 189 | ||
| 190 | if (count($commonNames) > 1) { |
|
| 191 | throw new BadCredentialsException( |
|
| 192 | 'Multiple commonName values provided in SAML Assertion' |
|
| 193 | ); |
|
| 194 | } |
|
| 195 | ||
| 196 | $commonName = $commonNames[0]; |
|
| 197 | ||
| 198 | if (!is_string($commonName)) { |
|
| 199 | $this->logger->warning('Received invalid commonName', ['commonNameType' => gettype($commonName)]); |
|
| 200 | throw new BadCredentialsException( |
|
| 201 | 'commonName is not a string' |
|
| 202 | ); |
|
| 203 | } |
|
| 204 | ||
| 205 | return $commonName; |
|
| 206 | } |
|
| 207 | } |
|
| 208 | ||