Forum Clubic

Javascript : authentification sur un site via le code

Bonjour,

Je travaille actuellement sur l’intégration dans un intranet de Web service.

J’ai donc pour l’implémentation a gérer des du javascript qui envoi a un serveur web des demandes de type GET, le serveur repond, je traite le resultat et tout va bien.

Le hic est que les commande su serveur web sont classés en 2 parties: l’une public donc accessible sans authentification particuliere, l’autre sécurisée et donc il faut une authentification de l’utilisateur.

or c’est bien ce qui me pose problème. Le code essaye bien de se connecter sur le serveur web mais est bloqué par l’authentification …

Voici un extrait:

[code]
var twsServerName = ‘192.168.120.20’;
var getTokenOnPageLoad = true;

					var token = null;

					if( getTokenOnPageLoad )
						TWS_GetMyToken( null );

					function TWS_GetMyToken( callback )
					{

						var url = 'http://' + twsServerName + '/fonction?username=qqch&password=';
						var ajax = TWS_GetNewAjax();
						ajax.open( 'GET' , url );
						ajax.onreadystatechange = 	function()
						{
							if( ajax.readyState == 4 )
							{
								var xmlToken = TWS_ParseXml( ajax.responseText );
								token = xmlToken.getElementsByTagName('Guid')[0].childNodes[0].nodeValue;
								alert(token);
								if( callback ) callback();
							}
						}
						ajax.send(null);	
					}

[code]

Pour bien préciser, les paramètres non d’utilisateur et mot de passe indiqué dans l’URL, sont après l’authentification sur le serveur Web. En gros et ca je ne sais pas si cela existe, il manquerait a cette fonction une premiere commande, qui selon l’utilisateur, ferait déjà la connexion sur le serveur web, puis ensuite enverrait l’URL présente dans l’extrait.

A votre avis es ce possible?

merci

Heu, pourquoi ne pas envoyer un token (temporaire) de connexion plutôt que de faire transiter en dur le login + mot de passe ?

hélas je ne peux pas

le service web attend clairement un nom d’utilisateur et un mot de passe

même si il y aurait une autre solution qui eviterait de faire passer en dur le nom d’utilisateur et mot de passe de cette façon, qui serait d’utiliser une autre fonction (présent le dans web service) qui utiliserait l’authentification windows.

Néanmoins il faut pour cela en premier lieu se connecter au page du web service et la on en revient au même il faut une authentification, mais elle je ne sais pas l’envoyer en JS

Mais un service auth. est appelé, il se connecte comment l’utilisateur ? Avec une popup firefox ? Avec une page de login ?

Et tes services “privés” tournent sur le même serveur que le “public”, pourquoi ne pas créer un autre service côté serveur reexploitant l’ancien en fournissant un utilisateur/mot de passe si besoin est ? (ie: pour vulgariser, le navigateur appelle public.php qui appelle prive.php)

si on se base sur du PHP, la méthode cURL pourrait mon avis fonctionner

$fp = fsockopen(“www.example.com”, 80, $errno, $errstr, 30); // Connexion (Host + Port)
$base64 = base64_encode(“login:password”);

mais il faudrait le faire en JS,…si on peut!

Si on passe pas par le code, mais avec un simple navigateur, on va sur l’adresse, une fenetre d’authentification type htaccess apparait (même si ce n’est pas du tout du htaccess qui est utilisé) et c’est tout

déjà au niveau du web service je n ai aucune possibilité de les modifier. Ils ont été développé ainsi je ne peux pas les modifier, je ne peux donc que faire avec.

Il s’agit de deux serveurs différents (les web services fonctionnant uniquement sous IIS) et l’intranet sous Apache

ben tu peux appeler une url comme ça : user:password@www.example.com…

Moi je ne te parle pas de modifier le webservice, juste de créer une passerelle “publique” qui appelle la partie privée. Et à elle de faire le nécessaire pour appeler la partie privée avec les bonnes informations.

l’url avec login/mdp dans l’adresse cela ne fonctionne pas malheureusement

et j 'ai rien compris a la notion de passerelle publique et privé…