271 votes

Pouvez-vous passer l'utilisateur/pass pour l'authentification de base HTTP dans les paramètres de l'URL ?

Je crois que ce n'est pas possible, mais quelqu'un que je connais a insisté pour que cela fonctionne. Je ne sais même pas quels paramètres essayer, et je n'ai trouvé aucune documentation à ce sujet.

J'ai essayé http://myserver.com/~user=username&password=mypassword mais ça ne marche pas.

Pouvez-vous confirmer qu'il n'est pas possible de passer l'utilisateur/pass par des paramètres HTTP (GET ou POST) ?

11 votes

0 votes

@sam - quoi ? A quoi ressemblerait l'URL complète ?

6 votes

Tout est dans la spécification ietf.org/rfc/rfc1738.txt (3.1)

361voto

Ryan Sampson Points 2898

Il n'est en effet pas possible de transmettre le nom d'utilisateur et le mot de passe via des paramètres de requête dans le cadre de l'authentification HTTP standard. À la place, il faut utiliser un format d'URL spécial, comme celui-ci : http://username:password@example.com/ -- cela envoie les informations d'identification dans l'en-tête standard HTTP "Authorization".

Il est possible que votre interlocuteur ait pensé à un module ou un code personnalisé qui examine les paramètres de la requête et vérifie les informations d'identification. Il ne s'agit pas d'une authentification HTTP standard, mais d'une application spécifique.

1 votes

Merci, c'est exactement ce que je cherchais... il n'est pas indispensable que ce soit des paramètres GET, il faut juste que je puisse les intégrer dans l'URL.

0 votes

Joli. Assurez-vous de coder également votre mot de passe au cas où il contiendrait des caractères spéciaux. Ouvrez simplement la console de votre navigateur encode("my&password&") . Vous renvoie la chaîne de caractères encodée à utiliser après la balise username

66 votes

Pour info, le http://username:password@example.com n'est plus supporté par l'un ou l'autre des formats suivants IE o Chrome Je ne serais pas surpris que d'autres suivent l'exemple, si ce n'est déjà fait.

27voto

Girish Kumar Points 341

http://username:password@example.com fonctionnera pour FireFox, Chrome, Safari MAIS pas pour IE.

Base de connaissances Microsoft

4 votes

Cette fonctionnalité a été supprimée de Chrome 19+. Voir code.google.com/p/chromium/issues/detail?id=123150

6 votes

D'après ce que j'ai lu dans ce rapport de bogue, il a été réintégré dans Chrome 20. En tout cas, je m'attendrais à ce que beaucoup de gens continuent à se plaindre si ce n'était pas le cas.

0 votes

Je l'ai maintenant demandé pour Internet Explorer : connect.microsoft.com/IE/feedback/details/873575/ . Un cas d'utilisation légèrement différent, mais qui répond au même problème ;)

24voto

Tom Points 622

Le passage des paramètres d'authentification de base dans l'URL n'est pas recommandé

Il y a un champ d'en-tête d'autorisation à cet effet, vérifiez-le ici : liste des en-têtes http

La façon de l'utiliser est écrite ici : Authentification de l'accès de base

Vous pouvez également y lire que, bien qu'elle soit encore prise en charge par certains navigateurs, la solution suggérée consistant à ajouter les informations d'autorisation de base dans l'url n'est pas recommandée.

Lire aussi chapitre 4.1 de la RFC 2617 - Authentification HTTP pour plus de détails sur les raisons pour lesquelles il ne faut PAS utiliser l'authentification de base.


Passage des paramètres d'authentification dans la chaîne de requête

Lorsque vous utilisez OAuth ou d'autres services d'authentification, vous pouvez souvent envoyer votre jeton d'accès dans une chaîne de requête plutôt que dans un en-tête d'autorisation, comme par exemple :

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD

0 votes

Et comment faire pour encoder un en-tête d'autorisation dans une URL ?

2 votes

N'est-ce pas le formulaire dont vous avez dit qu'il était désormais obsolète ?

4 votes

La question à laquelle vous avez répondu par "Il existe un champ d'en-tête d'autorisation à cette fin" demandait comment placer les paramètres d'authentification. dans l'URL . Si vous ne pouvez pas encoder les champs d'en-tête HTTP dans une URL (ce qui n'est pas le cas), votre réponse est un non-séquitur.

1voto

Tarfa Points 51

Dans votre exemple, l'URL http://myserver.com/ Ça le serait :

http://username:password@example.com/myserver.com/

En date du 19/12/2019, j'ai testé cette fonctionnalité et elle fonctionne pour Chrome Firefox Safari

Mais pas pour IE, qui ne supporte plus l'authentification de base. J'ai implémenté ceci en utilisant SSRS 2017, qui masque le nom d'utilisateur et le mot de passe. Je vous recommande de tester ceci avec un navigateur Incognito. Testez avec et sans le mot de passe dans différents navigateurs Incognito. Celui sans le mot de passe devrait vous demander le mot de passe.

1 votes

"IE, qui ne supporte plus l'authentification de base." - Vous voulez dire que la transmission des informations d'identification de l'utilisateur dans les info utilisateur de l'URL. IE supporte toujours "[HTTP] basic authentication". Et votre exemple d'URL devrait être : http://username:password@myserver.com/ .

0voto

Steve Smith Points 109

Il est (évidemment) possible d'envoyer n'importe quelle chaîne de caractères dans les paramètres GET, bien qu'il ne soit pas recommandé d'envoyer le nom d'utilisateur et le mot de passe car cela peut les rendre très visibles, surtout s'ils ne sont pas dans une requête AJAX.

Vous devrez toutefois coder la page du serveur pour extraire le nom d'utilisateur et le mot de passe, puis les valider et les utiliser de la manière requise.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X