JQuery : Authentification HTTP BASIC

En JQuery, nous pouvons effectuer des requêtes AJAX sur un serveur REST. Comment définir l'entête HTTP qui contient les éléments d'authentification?

Pour cela, on utilise la librairie Crypto-JS de Google : https://code.google.com/p/crypto-js/

En JQuery, nous pouvons effectuer des requêtes AJAX sur un serveur REST. Comment définir l'entête HTTP qui contient les éléments d'authentification?

Pour cela, on utilise la librairie Crypto-JS de Google : https://code.google.com/p/crypto-js/

 

Ne pas oublier de faire les imports suivants : 

 

<script src="libjs/jquery.js"></script>

<script src="libjs/sha256.js"></script>

<script src="libjs/enc-base64.js"></script>

 

Dans cet exemple, nous avons pris le parti d'encoder le mot de passe en SHA-256 coté client, la vérification du serveur se contente donc juste de vérifier que les hashs concordent.

 

Le login est stocké dans la variable $scope.login

Le mot de passe en clair est stocké dans la variable $scope.password

 

 

$.ajax( 

{

url : 'rest/private/user/ping',

dataType : 'json',

beforeSend : function(xhr) 

{

console.log($scope.login);

console.log($scope.password);

 

var basicAuth = $scope.login + ":" + CryptoJS.SHA256($scope.password);

console.log('basicAuth : '+ basicAuth);

 

var basicAuthParsed = CryptoJS.enc.Utf8.parse(basicAuth);

console.log('basicAuthParsed : '+ basicAuthParsed);

 

var basicAuthParsedEncoded = CryptoJS.enc.Base64.stringify(basicAuthParsed);

console.log('basicAuthParsedEncoded : ' + basicAuthParsedEncoded);

 

xhr.setRequestHeader("Authorization""Basic " + basicAuthParsedEncoded);

},

error : function(xhr, ajaxOptions, thrownError) 

{

alert('Not working :' + thrownError);

},

success : function(model) 

{

alert('It works! : ' + model);

}

});

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.