Comportement des navigateurs d'applications mobiles avec Google sessions et Account Chooser

problème: essayer de créer SSO entre l'application mobile. et le navigateur.

Ce que nous avons:

nous avons une application mobile ionique. avec "Se connecter avec Google" en utilisant l'authentification OAuth 2.0. Nous avons plusieurs applications internes qui fonctionnent sur OAuth2 et SAML, nous avons donc activé SSO pour GSuite afin que toutes les applications fonctionnent de manière transparente avec un login et un mot de passe. Maintenant, lorsque nous cliquons sur le bouton "Se connecter avec Google",

  1. ouvre la page de connexion SSO dans un application navigateur. Nous avons activé SSO par conséquent, nous avons défini login_hint, ce qui nous aide directement à Page de connexion de SSO.

  2. les entrées de l'utilisateur useremail et password et il redirige vers le redirect_uri post authentification réussie avec le code OAuth 2 param.

  3. la redirect_uri se fait de telle manière que lorsque l'url est déclenchée, il rediriger à nouveau vers notre application android avec OAuth 2 code param et puis nous extrayons l'access_token et useremail de jeton et userinfo points de terminaison.

  4. base l'autorisation, tableau de bord affiche les liens vers notre des apps. cela fonctionne avec L'authentification Google SAML 2.0 ou OAuth2.

Ce qui est attendu:

lorsque l'utilisateur accède à L'un des liens SAML/OAuth 2 de l'application mobile. dashboard, nous ouvrons ce lien dans l'application de navigateur. et il devrait être automatiquement connecté à l'application. et nous emmener vers la page de destination, comme nous l'avons déjà Sessions Google définies à l'étape #a.

choses qui s'écartent des attentes:

  • lorsque nous tentons d'accéder aux applications SAML/OAuth, le sélecteur de Compte apparaît lorsqu'il y a un profil défini dans Chrome browser qui liste tous les comptes synchronisés dans device, mais pas le seul utilisateur qui s'est connecté avec #B. Il devrait afficher ce compte ou se connecter directement et afficher la page d'accueil. Cela ne se produit pas lorsque nous n'avons pas de profil chrome.
  • le les sessions dans tous les navigateurs sont automatiquement désactivées lorsque nous suivons et demandons donc à nouveau les informations d'identification.
    • fermez l'onglet Navigateur(parfois).
    • effacer le navigateur des récentes applications tray (la plupart du temps)
    • redémarrez le périphérique (toujours)

a voulu comprendre comment et quand les sessions sont créées et tuées automatiquement dans Google Chrome dans les téléphones mobiles ?

où garder la session intacte ? / Y a-t-il un moyen de passer le sélecteur de comptes qui montre les comptes synchronisés avec le téléphone ?

mise à Jour

capable de comprendre une observation étrange: Nous avons maintenu SSO hors afin que L'écran de connexion Google entre dans la photo. Avec ce tout fonctionne bien. Sessions ne sont pas tués même si redémarrer le navigateur ou le téléphone indépendamment de Android ou iOS.

donc le problème est dans SSO que nous avons conçu. Incapable de comprendre ce que est d'être défini dans SAML XML que nous postons à L'URL ACS de Google.

17
demandé sur Kartik Domadiya 2017-02-27 16:21:22

1 réponses

1. Voulu comprendre comment et quand les sessions sont créées et tuées automatiquement dans Google Chrome dans les téléphones mobiles?

je pense que Google Chrome agit dans les téléphones mobiles de la même manière qu'il le fait dans les ordinateurs, donc les sessions sont créés et tués en utilisant le HTML5 sessionStorage, utilisateur configuration et l'appareil politiques:

il existe deux types de Stockage Web jusqu'à présent, et ce sont le localStorage, et le sessionStorage. La principale différence réside dans le fait que localStorage persiste sur les différents onglets ou fenêtres, et même si nous fermer le navigateur, en conséquence avec la Politique de sécurité de domaine et choix des utilisateurs concernant la limite de quota.

Aussi, il est important de savoir comment Chrome sauve et synchronise les mots de passe:

comment Chrome sauve et synchronise les mots de passe (dans l'ordinateur et Android) les appareils) dépend de si vous voulez stocker et utilisez-les sur tous les appareils. Lorsque synchronisés, les mots de passe peuvent être utilisés sur Chrome sur tous vos appareils, et à travers certaines applications sur votre Android appareil.

vos mots de passe sont enregistrés sur votre compte Google si l'un des suivantes sont remplies:

  • vous êtes connecté à Chrome et vous synchronisez les mots de passe
  • vous utilisez Smart Lock pour les mots de passe sur Android

sinon, vos mots de passe ne sont stockés que sur Chrome sur votre ordinateur ou votre appareil Android.

comment Chrome sauve et synchronise les mots de passe (dans les appareils iPhone et iPad) dépend de si vous voulez stocker et les utiliser sur les appareils.

vos mots de passe sont enregistrés sur votre compte Google si vous êtes connecté à Chrome et synchronisent les mots de passe.

sinon, vos mots de passe ne sont stockés que sur Chrome sur votre iPhone ou iPad.


2. Est-il possible de conserver la session intacte ?

Je ne suis pas qualifié/intéressé par le développement iOs ou HTML5, mais J'ai essayé quelque chose de similaire pour Android et un ancien domaine Googleapps lorsque Google a lancé Smart Lock pour les mots de passe sur Android:

Enregistrez et récupérez les justificatifs D'identité et signez automatiquement les utilisateurs dans l'ensemble des appareils et des sites Web dans Chrome.

Remarque: SSL est requis sur votre serveur Activer la connexion automatique dans les applications et les sites web

le Smart Lock pour les mots de passe et API comptes connectés facilite la sauvegarde et la récupération des justificatifs d'identité pour votre application et le site associé

Vous pouvez Gérer plusieurs informations d'identification enregistrées et Supprimer manuellement les informations d'identification stockées

lorsque l'utilisateur doit entrer des données pour sélectionner un justificatif, le la méthode getStatusCode () retourne RESOLUTION_REQUIRED. Dans ce cas, appelez la méthode startResolutionForResult() de l'objet status pour demander utilisateur de choisir un compte. Ensuite, extraire l'utilisateur choisi références de la méthode onActivityResult () de l'activité en passant Des informations d'identification.EXTRA_KEY à la méthode getParcelableExtra ().

Et se connecter En Utilisant l'ID de Jetons disponible lorsqu'un Le code d'utilisateur de l'objet justificatif correspond au Code d'utilisateur D'un compte Google qui est ouvert sur L'appareil.

Comment œuvre et utile scénarios test et case il en SI les réponses.


3. Y a-t-il un moyen de passer le sélecteur de comptes qui montre les comptes synchronisés avec le téléphone ?

Utiliser Google connexion avec des Applications

Whitelist l'application de sorte que vos utilisateurs ne verront pas écran de confirmation quand ils s'inscrivent. Cette étape, combinée avec la prochaines étapes ( point 4: passer Google pour le domaine de travail du compte au serveur auth, de sorte que seuls les comptes dans ce domaine sont affichés lors de la connexion), garantit que les utilisateurs de votre application IT peuvent connectez-vous automatiquement. À la liste blanche de votre application:

enter image description here enter image description here enter image description here

  • entrez le code d'identification de client OAuth que vous avez inscrit pour la demande. Un ID client est normalement une chaîne de lettres et de chiffres suivie de .apps.googleusercontent.com.
  • dans L'API Champ Scopes, tapez la chaîne suivante: https://www.googleapis.com/auth/plus.me,https://www.googleapis.com/auth/userinfo.email
  • si votre application doit demander des portées supplémentaires pour accéder aux API Google, spécifiez-les ici.
  • Cliquez Sur Autoriser. La liste blanche entrera en vigueur dans environ 30 minutes.

Remarque: la liste blanche ne fonctionnera pas si l'application démarre le flux de connexion OAuth/Open ID et inclut paramètres hors ou invite. Ces paramètres sont généralement pas nécessaires pour les applications.

Force/bypass compte google sélecteur de OAuth2 autorisation Url

le paramètre suivant est pris en charge dans les URLs d'autorisation OAuth2: invite

Actuellement, il peut avoir des valeurs '' et 'consent'.

aucun: Va faire en sorte que Google ne montre aucune interface utilisateur, et donc échouer si l'utilisateur besoin de vous connecter, ou sélectionnez un compte en cas de multi-connexion, ou consentement si la première approbation. Il peut être exécuté dans un I-frame invisible pour obtenir un token d'utilisateurs préalablement autorisés avant de décider, pour instance, pour afficher un bouton d'autorisation.

consentement: va forcer l'affichage de la page d'approbation même si l'utilisateur a déjà autorisé votre demande. Peut être utile dans un quelques le coin des cas, par exemple, si vous avez perdu le refresh_token pour l'utilisateur, comme Google ne publie des rafraîch_tokens sur l'action de consentement explicite.

select_account: provoquera l'affichage du sélecteur de Compte, même si il y a un seul utilisateur connecté, tout comme vous l'avez demandé.

select_account peut être combiné avec consentement, comme dans: prompt=select_account+consent

utilisation de l'autorisation via le client JS bibliothèque

vous n'obtiendrez pas l'écran de sélection multi-utilisateurs à cause du le paramètre suivant: authuser=0 sélectionne automatiquement le premier le compte dans lequel vous êtes inscrit (authuser=1 choisirait le second etc.).


4. Mise à jour: Avec SSO hors tout fonctionne bien...les séances ne sont pas tués...

SSO fédéré basé sur le SAML

Voici comment configurer une seule connexion (SSO) via SAML pour L'application Slack®.

en utilisant le langage de balisage D'Assertion de sécurité (SAML), vos utilisateurs peuvent utiliser leurs justificatifs D'identité Google Cloud pour vous connecter à enterprise-cloud application.

en tant Qu'administrateur, vous devez configurer quelques choses pour le faire fonctionner, y compris:

  • configurer l'application sélectionnée en tant que fournisseur de services (PS) SAML.
  • mettre en place la Suite G en tant que fournisseur D'identité SAML (IDP).
  • saisissez les détails des fournisseurs de services spécifiques à L'application dans Google Admin console.
  • allumer l'ouverture de session unique pour la demande.
  • vérifier que l'OSP fonctionne.

configurer les applications cloud pré-intégrées ou votre propre application SAML

connexion. Cliquez sur Apps > SAML apps. Sélectionner Ajouter un service/Application pour votre domaine et configuration:

enter image description here

activez SSO pour votre nouvelle application SAML:

connectez-vous à votre console D'administration. Aller à Apps > SAML apps.

sélectionnez l'application. En haut de la boîte grise, cliquez sur Plus De Paramètres et choisir:

  • que tout le monde allume le service pour tous les utilisateurs (cliquez de nouveau pour confirmer).
  • Off pour désactiver le service pour tous les utilisateurs (cliquez de nouveau pour confirmer).
  • sur pour certaines organisations de changer le réglage seulement pour certains utilisateurs.

enter image description here enter image description here enter image description here

Utiliser Google connexion avec des Applications

les suivants est une liste de contrôle des étapes à suivre lorsque vous utilisez Google La connexion avec des comptes de travail pour une application informatique développée sur mesure. Si vous développez une application mobile, référez-vous au les meilleures pratiques pour mobile.

si votre application connaît le domaine Google for Work du compte, vous devrait passer ce domaine au serveur d'auth de sorte que seuls les comptes dans ce domaine sont affichées lors de la connexion. Sur Android, c'est fait avec le setHostedDomain méthode de construction, et sur iOS, c'est fait avec le hostedDomain propriété.

Ceci est aussi fait en utilisant le hd paramètre avec le paramètre REST endpoint, et le paramètre hosted_domain avec L'API JavaScript.


5. Quel. .. pour définir dans SAML XML que nous postons à L'URL ACS de Google.

configuration des métadonnées des fournisseurs pour L'intégration de SAML

SAML les métadonnées sont utilisées pour partager l'information de configuration entre les Le fournisseur d'identité (PDI) et le fournisseur de services (PS). Des métadonnées pour l'IdP et le SP sont définis dans un fichier XML:

le fichier XML de métadonnées IdP contient le certificat IdP, L'ID de l'entité, L'URL de redirection, et L'URL de post, par exemple, saml_idp_metadata.xml.

<?xml version="1.0" encoding="UTF-8"?>
  <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://test.my.company.com" validUntil="2024-08-13T07:37:40.675Z">
    <md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
      <md:KeyDescriptor use="signing">
        <ds:KeyInfo>
          <ds:X509Data>
            <ds:X509Certificate>encoded_certificate</ds:X509Certificate>
          </ds:X509Data>
        </ds:KeyInfo>
      </md:KeyDescriptor>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://https://test.my.company.com/idp/endpoint/HttpPost"/>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://test.my.company.com/idp/endpoint/HttpRedirect"/>
  </md:IDPSSODescriptor>
</md:EntityDescriptor>

le fichier XML de métadonnées SP contient le certificat SP, L'ID de l'entité, et L'URL Assertion Consumer Service (URL ACS), par exemple, saml_sp_metadata.xml.

<EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="http://client.mydomain.com:80/webconsole">
  <SPSSODescriptor WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://client.mydomain.com:80/webconsole/samlAcsCallback.do" isDefault="true"/>
    <KeyDescriptor>
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>encoded_certificate</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </KeyDescriptor>
    <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:entity</NameIDFormat>
  </SPSSODescriptor>
</EntityDescriptor>

avant D'utiliser SAML pour se connecter à la Console Web, les métadonnées de L'IdP doit être téléchargé et les métadonnées du PS doivent être générées. Après l' Les métadonnées SP sont générées, elles doivent être partagées avec L'IdP. Contacter le IdP pour obtenir des instructions sur le partage de la SP de métadonnées.

créer un fichier de métadonnées de fournisseur D'identité (PDI) XML utilisation du SAML protocole. Pour les spécifications de métadonnées SAML, allez à Oasis site web, métadonnées pour L'OASIS Langage de balisage D'assertions de sécurité (SAML)) V2.0.

créer un fichier keystore. Pour plus d'informations sur les fichiers keystore, voir création de certificats pour SAML Intégration.

pour plus d'information sur l'utilitaire keytool, allez à Oracle Site Web de Documentation, keytool - Clé et Gestion Des Certificats Outil.

URLs des fournisseurs de services SAML

pour configurer G Suite comme fournisseur D'identité SAML (IdP), vous devez entrer les URLs du fournisseur de services SAML pour chaque individu applications cloud préconfigurées que vous prévoyez de configurer.

Liens pour l'Entité ID, URL ACS et valeurs D'URL de démarrage pour chacun des nuages préconfigurés des apps.


6. Dépannage lors de L'ouverture de session unique (SSO)

Ce document fournit des étapes pour résoudre les messages d'erreur courants rencontrés pendant le intégration ou utilisation de connexion simple basée sur le SAML L'authentification unique (SSO) avec G Suite quand Google est le fournisseur de services (SP).

4
répondu albodelu 2017-05-23 11:46:49