Je voudrais demander à l'utilisateur d'utiliser un J'ai trouvé qu'il y a 3 façons de résoudre que cela puisse être résolu, mais il semble que seul le dernier (le plus compliqué) pourrait être une solution pour mon problème: P>
Utilisez un descripteur de déploiement ( Utilisez le login fédéré ( Open ID ID FORT>) ( https : //developers.google.com/appengine/articles/openid ) et permettre aux utilisateurs d'utiliser leur Google, Yahoo! ou d'autres identités à se connecter. Ce n'est pas une solution, car je souhaite limiter l'accès à un petit ensemble d'utilisateurs (max. 5) et ne permettez pas à chacun d'utiliser l'application. P> li>
L'autre option consiste à créer une page de connexion personnalisée simple forte> accessible uniquement via https et permet à l'utilisateur d'envoyer le nom d'utilisateur et le mot de passe d'une demande postale (cela peut être clair puisque nous avons sécurisé < Strong> HTTPS STRUT> Connection) à un servlet, sur le servlet générer un identifiant de session fort> avec une validité spécifiée et en fais partie de chaque demande suivante. Il a également besoin de vérifier chaque fois que l'utilisateur envoie une demande d'obtention ou de poste si l'identifiant de session existe et n'expire pas pendant ce temps manuellement. P> li>
ol>
Toute autre propositions / meilleures sur la manière de gérer les comptes d'administrateur? Peut genre Cordialement,
Sten p>
httpsession code> aide avec la dernière variante? P>
4 Réponses :
J'utilise une combinaison de 2 et 3. Je permet à tous les utilisateurs de se connecter, mais je limite ensuite les actions à des adresses de messagerie particulières. Ceux-ci pourraient être codés durs ou (mieux) dans le magasin de données et Memcache (afin que vous n'ayez pas à interroger le magasin de données sur chaque demande). Vous pouvez également mettre en cache ces données dans des variables statiques en Java si vous voulez - simplement être conscient que vous devriez avoir besoin de tuer des instances manuellement si vous modifiez les utilisateurs qui ont accès. Si, comme moi, vous changez rarement / ne change jamais accès, cela ne devrait pas être un problème. P>
Permettre à tous les utilisateurs de se connecter ne leur donne pas vraiment accès dans mon application - ils voient les pages d'administration mais elles sont vides d'un message disant "Vous n'avez accès à aucune de ces options administratives". P>
Quelqu'un peut-il partager un exemple de code pour cela sur le côté servlet?
Certaines notes: p>
afaik Votre hypothèse n'est pas correcte. Connexion à l'application n'a rien à voir avec la permission des pages d'administration. Vous devez expliquer explicitement des utilisateurs via une page "Autorisations" pour avoir accès aux pages d'administration. P> LI>
Vous pouvez toujours vérifier les propriétés de l'utilisateur (email) après que l'utilisateur se connecte à OpenID et nier leur accès. p> li>
Ceci est bien sûr faisable. Le moyen naturel de suivre les utilisateurs sont sessions . Google pour des exemples. P> li> ol>
Dans les deux cas 2. '3. Il est conseillé de disposer d'un filtre de servlet qui vérifie la session s'il y a l'utilisateur de se connecter et de refuser l'accès (retour 404) si l'utilisateur n'est pas connecté. P>
Je suggère la page de connexion Google standard. Utilisez quelque chose comme celui-ci dans votre contrôleur d'authentification (cadre Java + Jersey qui n'est bien sûr pas nécessaire): La méthode de connexion vous redirige une application sur la page de connexion Google si l'utilisateur est MIQUIN (essentiellement pas connecté). La méthode de la déconnexion déconnectera l'utilisateur. P> espère que cela aide p> p>
Faites attention à la 3ème solution: au lieu de passer nom d'utilisateur et mot de passe, mon webApp demande nom d'utilisateur et apisecret (généré automatiquement à la première connexion), vous pouvez donc invalider (et générer à nouveau) rapidement l'apêche si quelque chose ne va pas. < P> Il y a une autre option: oauth (https://developers.google.com/appengine/docs/java/oauthe/).
Voici mon article de code (userAccount est ma classe pour représenter un utilisateur; l'utilisateur est "com.google.appengine.api.users.user", récupérateur (..) est la fonction de récupération de mon utilisateur d'un "utilisateur" enregistré. ): p>
Vous confondez deux problèmes complètement distincts ici, authentification et autorisation. Vous pouvez combiner l'une des deux premières solutions (authentification) avec votre propre solution pour vérifier l'autorisation. Le moyen le plus simple de le faire serait de gérer une liste d'utilisateurs autorisés dans le magasin de données et recherchez les utilisateurs lors de leur connexion pour vérifier les autorisations, comme le suggèrent Pierre et Adam ci-dessous.