Javascript / Ajax NTLM Authentification
Je suis en train d'élaborer un HTML5 application mobile qui communique avec WebServices
. WebServices utilisation de protocole d'authentification NTLM. Je vais avoir des difficultés à manipuler la poignée de main via JavaScript. NTLM envoie le 401 unauthorized
comme réponse à mon POST, je n'ai pas trouvé de moyen d'y répondre.
Est l'authentification NTLM possible avec du JavaScript? Dois-je construire un proxy de service web, par exemple avec l'authentification de base entre les deux?
mon jQuery appel est quelque chose comme...
$.ajax({
type: "POST",
url: URL,
contentType: "text/xml",
dataType: "xml",
data: soapRequest,
username: 'username',
password: 'password',
xhrFields: {
withCredentials: true
},
success: processSuccess,
error: processError
});
source d'informationauteur TryCatch
Vous devez vous connecter pour publier un commentaire.
Comme ce que j'ai vu, personne n'a mis en œuvre Intégrée de Windows/NTLM auth avec l'AJAX, mais il devrait être possible (j'envisage de le faire pour un projet en cours de combiner formulaire d'authentification avec le WindowsTokenRoleProvider)
Le flux de production de base devrait répartition comme suit (sur la base des articles ici et ici):
"L'autorisation" de l'en-tête
de la "WWW-Authenticate" en-tête de la réponse 401.
NTLM auth via HTTP est plus un CHAP de la mise en œuvre à l'aide de HTTP qu'il est autorisé de la requête HTTP.
Je vais vous mettre à jour si j'ai effectivement l'obtenir autour de la mise en œuvre de cette. Désolé je ne pouvais pas être de plus d'aide.
Le problème est que vous ne pouvez pas obtenir actuellement connecté au domaine/utilisateur par l'intermédiaire de javascript (ou si vous le pouvez, je n'ai jamais trouvé une solution).
Si vous connaissez déjà le domaine, nom d'utilisateur et mot de passe vous pouvez utiliser quelque chose comme https://github.com/erlandranvinge/ntlm.js/tree/master
Cependant, je pense aller en bas de cette méthode pour la connexion unique va être frustrant à la longue.
Nous avons fini par faire l'authentification NTLM caché dans un iframe et l'accès à l'iframe, via javascript.
Ouais NTLM n'est pas très amusant. Mais vous pourriez vouloir essayer cette, https://github.com/tcr/node-ntlm/blob/master/README.md
Vous n'avez pas à répondre à la NTLM (Authentification Windows Intégrée) défi, votre navigateur doit le faire pour vous, si elle est correctement configuré. Un certain nombre de complications supplémentaires sont probablement trop.
Étape 1 - Navigateur
Vérifier que le navigateur peut accéder et d'envoyer vos informations d'identification avec un NTLM application web ou en appuyant sur le logiciel que vous êtes en développement directement de la première.
Étape 2 - JavaScript withCredentials attribut
La 401 non autorisé d'erreur reçus et les symptômes décrits sont exactement la même chose quand je n'avais pas réussi à définir la "withCredentials" attribut "vrai". Je ne suis pas familier avec jQuery, mais assurez-vous que votre tentative de réglage de cet attribut est un succès.
Cet exemple fonctionne pour moi:
Étape 3 - côté Serveur activer les catégories de documents (en Option)
Je soupçonne une des raisons majeures de personnes se retrouvent dans cette question, c'est qu'ils sont le fait de développer un composant sur leur poste de travail avec un autre composant hébergé ailleurs. Cela provoque Cross-Origin Resource sharing (SCRO) questions. Il y a deux solutions:
En bref, afin de permettre à la SCRO avec des informations d'identification, vous devez:
Voici mon travail .NET exemple de code dans mon global.asax fichier. Je pense qu'il est assez facile de voir ce qui se passe et de le traduire en d'autres langues si nécessaire.