web-dev-qa-db-fra.com

Pouvez-vous transmettre l'utilisateur / passer pour l'authentification de base HTTP dans les paramètres d'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é cela documenté nulle part.

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

Pouvez-vous confirmer qu'il n'est en fait pas possible de passer l'utilisateur/passer via les paramètres HTTP (GET ou POST)?

175
ripper234

Il n'est en effet pas possible de transmettre le nom d'utilisateur et le mot de passe via les paramètres de requête en authentification HTTP standard. Au lieu de cela, vous utilisez un format d'URL spécial, comme ceci: http://username:[email protected]/ - ceci envoie les informations d'identification dans l'en-tête HTTP "Autorisation" standard.

Il est possible que la personne à qui vous parliez pense à un module ou un code personnalisé qui examine les paramètres de la requête et vérifie les informations d'identification. Ce n'est pas une authentification HTTP standard, cependant, c'est une chose spécifique à l'application.

234
womble

http: // nom d'utilisateur: [email protected] fonctionne pour FireFox, Chrome, Safari MAIS pas pour IE.

Base de connaissances Microsoft

20
Girish Kumar

La transmission des paramètres d'authentification de base dans l'URL n'est pas recommandée

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

Comment l'utiliser est écrit ici: Authentification d'accès de base

Là, vous pouvez également lire que même si elle est toujours prise en charge par certains navigateurs, la solution suggérée d'ajouter les informations d'identification d'autorisation de base dans l'url n'est pas recommandée.

Lisez aussi chapitre 4.1 dans RFC 2617 - Authentification HTTP pour plus de détails sur les raisons de NE 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 également envoyer votre jeton d'accès dans une chaîne de requête plutôt que dans un en-tête d'autorisation, donc quelque chose comme:

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

Il est (évidemment) possible d'envoyer n'importe quelle chaîne dans les paramètres GET, bien qu'il ne soit pas recommandé d'envoyer un identifiant et un mot de passe car cela peut le rendre très visible, surtout si ce n'est pas dans une demande AJAX.

Cependant, vous devrez ensuite coder la page du serveur pour extraire le login et le mot de passe, puis les valider et les utiliser de la manière requise.

0
Steve Smith

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

http: // nom d'utilisateur: [email protected]/myserver.com/

Depuis le 19/12/2019, j'ai testé cela et cela fonctionne pour Chrome Firefox Safari

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

0
Clark Vera