*/ public array $idTokenClaims = []; /** * @param array $claims */ public function setIdTokenClaims(array $claims): self { $this->idTokenClaims = $claims; $this->issuer = is_string($claims['iss'] ?? null) ? $claims['iss'] : null; $this->subject = is_string($claims['sub'] ?? null) ? $claims['sub'] : null; $this->emailVerified = self::claimsVerifyEmail($claims); return $this; } /** * Microsoft Entra ID never sends email_verified. Its optional xms_edov * claim ("email domain owner verified") is the documented replacement. * * @param array $claims */ public static function claimsVerifyEmail(array $claims): bool { return ($claims['email_verified'] ?? null) === true || ($claims['xms_edov'] ?? null) === true; } }