Par défaut, le service de compte Google accessible en externe gère l'authentification des comptes Google. Lorsqu'un utilisateur non authentifié accède à une page Google nécessitant une authentification, le formulaire de connexion Google lui demande son adresse e-mail et son mot de passe. Une fois que l'utilisateur a envoyé son adresse e-mail et son mot de passe, l'authentification Google vérifie que les identifiants saisis sont corrects. Si les identifiants sont corrects, l'authentification Google définit les cookies de connexion de l'utilisateur.
Certaines entreprises utilisent un modèle plus sophistiqué dans lequel un fournisseur d'identité (IdP) tiers gère l'authentification. L'authentification Google est compatible avec ce modèle via le protocole SAML (Security Assertion Markup Language), qui est une norme du secteur. Un administrateur peut configurer un domaine pour qu'il utilise l'authentification SAML.
Obtenir le mot de passe de l'utilisateur
ChromeOS doit identifier le mot de passe saisi par l'utilisateur lors de la connexion pour :
- Chiffrez les données utilisateur stockées sur le disque dur.
- Protégez l'écran de verrouillage.
- Activez la connexion hors connexion lorsque le réseau n'est pas accessible.
Lorsque vous utilisez SAML, le mot de passe n'est pas saisi directement dans une boîte de dialogue système ChromeOS, mais dans une WebView hébergée par le fournisseur d'identité. Bien que ChromeOS ait accès au code HTML, il n'existe pas de méthode simple et canonique pour obtenir le mot de passe, car il n'est pas clair quels champs de formulaire contiennent les données.
Il existe deux façons d'obtenir le mot de passe d'un utilisateur lorsque vous utilisez SAML : l'API Credentials Passing et le scraping de mot de passe.
API Chrome Credentials Passing
Google fournit une API Credentials Passing que les fournisseurs d'identité peuvent implémenter sur les pages SAML, en JavaScript, pour transmettre les données requises à ChromeOS. L'authentification Google utilise cette API, mais n'importe quel fournisseur d'identité SAML peut également l'utiliser.
Scraping de mots de passe
Un fournisseur d'identité SAML peut utiliser le scraping de mot de passe lorsqu'il n'est pas compatible avec l'API Credentials Passing.
Avec cette méthode :
- L'écran d'authentification injecte un script de contenu dans la WebView qui héberge le processus de connexion.
- Le script de contenu identifie les champs de saisie HTML de type "password" et copie leur contenu dans un tableau. Le tableau est mis à jour chaque fois que le contenu d'un champ de mot de passe change.
- Les mots de passe récupérés sont envoyés à une page en arrière-plan qui les accumule. De cette façon, le mot de passe peut être capturé même si le flux de connexion s'étend sur plusieurs redirections vers différentes pages HTML.
À la fin du processus de connexion, le tableau des mots de passe récupérés est extrait de la page d'arrière-plan. Trois cas sont possibles : aucun mot de passe n'a été extrait, un seul mot de passe a été extrait ou plusieurs mots de passe ont été extraits.
Aucun mot de passe n'a été extrait
Le script de contenu ne parvient pas à localiser le mot de passe dans les pages HTML fournies par le fournisseur d'identité. Il est possible que le fournisseur d'identité n'utilise pas de mots de passe traditionnels.
Dans ce cas, ChromeOS invite l'utilisateur à choisir un mot de passe manuel pour l'appareil. Si le mot de passe n'existe pas (par exemple, authentification par carte à puce, NFC ou biométrie), le processus d'authentification ChromeOS peut se poursuivre sans le mot de passe.
Un seul mot de passe a été récupéré
Le script de contenu identifie un seul mot de passe. Il s'agit très probablement du mot de passe utilisé par l'utilisateur pour l'authentification.
Dans ce scénario, nous avons très probablement récupéré le mot de passe de l'utilisateur correctement. ChromeOS utilisera le mot de passe récupéré comme mot de passe de l'utilisateur pour poursuivre le processus d'authentification.
Plusieurs mots de passe ont été récupérés
Le script de contenu identifie plusieurs mots de passe. Cela peut se produire dans des circonstances telles qu'un fournisseur d'identité exigeant qu'un utilisateur saisisse un mot de passe permanent et un mot de passe à usage unique dans le formulaire de connexion.
Dans ce scénario, nous avons probablement récupéré le mot de passe réel de l'utilisateur et d'autres champs de mot de passe qui ne présentent aucun intérêt pour ChromeOS. Pour déterminer quel est le mot de passe correct, ChromeOS invite l'utilisateur à le saisir une nouvelle fois dans une invite de mot de passe supplémentaire.
Si le mot de passe saisi correspond à l'un des mots de passe récupérés, le mot de passe réel de l'utilisateur a été identifié et le processus d'authentification se poursuit. Si aucune correspondance n'est trouvée, l'utilisateur est invité à saisir de nouveau son mot de passe. Après deux échecs, la connexion échoue et un message d'erreur s'affiche.
Enregistrement d'entreprise
Pour l'enregistrement Enterprise, l'adresse e-mail de l'utilisateur qui enregistre l'appareil est nécessaire pour l'associer au bon domaine. L'e-mail est envoyé par le serveur DM (Device Management) à Chrome dans le champ "nom d'utilisateur" du message PolicyData lors de la récupération des règles relatives aux appareils. Il n'est pas nécessaire de déterminer le mot de passe de l'utilisateur.