Question

Je travaille sur un site où les utilisateurs peuvent se connecter pour obtenir plus d'informations privées.Mon client a un autre site ailleurs où il utilise authentification NT pour y accéder.

Ce qu'ils veulent faire, c'est avoir un button sur le site sur lequel je travaille sous l'espace privé qui les enverra au non authentifié site, mais ne les oblige pas à se connecter à ce site au lieu de passer le nom d'utilisateur et mot de passe qu'ils avaient l'habitude de se connecter à mon site sur l'autre site pour eux.

Est-il possible de faire cela?et comment pourrais-je y parvenir ?Y a-t-il une meilleure manière de faire cela?

Était-ce utile?

La solution

Voici une théorie (non testée), dont les détails dépendront grandement des types d'authentification acceptés par le site Sharepoint.je vais aborder Basique, puisque c'est le plus simple.

Vous écrirez du JavaScript qui utilise XMLHttpRequest pour soumettre une demande au site Sharepoint et ajouterez leur nom d'utilisateur et leur mot de passe aux en-têtes de demande.Leur navigateur exécutera ce JavaScript et se connectera au site Sharepoint.

Désormais, lorsqu'ils cliquent sur le lien, le navigateur du client doit disposer des informations d'identification mises en cache à envoyer au site Sharepoint.

Problèmes possibles :

  • XMLHttpRequest n'autorise pas l'authentification inter-domaines
  • Le navigateur et XHR ne partagent pas les informations d'authentification
  • Sharepoint et XHR ne parviennent pas à s'entendre sur la méthode d'authentification

Une autre option consiste à proxy la connexion à Sharepoint, ce qui vous permet de vous connecter côté serveur (en contournant les limitations XHR et la sécurité du navigateur) - mais nécessitant une charge sur votre serveur et éventuellement certains problèmes de cible d'URL.

Autres conseils

Comment l'autre site validera-t-il votre nom d'utilisateur et votre mot de passe ?

Idéalement, votre site ne devrait même pas se souvenir du mot de passe de l'utilisateur pour pouvoir le transmettre à un autre site (vous stockez les hachages du mot de passe, pas le mot de passe lui-même, et n'utilisez que le mot de passe réel lors de la validation).

Que se passe-t-il si votre site fournit un jeton à l'utilisateur, qui présente ce jeton au nouveau site, qui demande à son tour à votre site de valider le jeton.Fondamentalement, le deuxième site vous fait confiance pour lui dire qui est l'utilisateur.

Tout cela échoue si le deuxième site utilise réellement les comptes Windows pour autre chose que la simple récupération d'un nom d'utilisateur (par exemple, les autorisations sur le fichier sous-jacent), puisque l'utilisateur n'est pas connecté en tant que compte d'utilisateur Windows réel dans ce scénario.

Si vous devez vous authentifier sur le deuxième site, vous devrez peut-être créer un nouveau fil de discussion et appeler l'API Windows LogonUser.Une fois que vous disposez du jeton de sécurité, attribuez-le au nouveau fil et établissez votre connexion via ce fil.

LogonUser nécessite des privilèges améliorés et n'est pas du code géré, son utilisation présente donc de sérieux problèmes.Mais c'est la seule solution que j'ai pu trouver pour qu'un site authentifié par Forms communique avec un service/site authentifié Windows.

J'espère que cela t'aides.

S'agit-il d'un environnement intranet ?Si tel est le cas, ils ne devraient de toute façon pas avoir à se connecter.Si Sharepoint est configuré à l'aide de « Authentification intégrée » et que le site est répertorié comme site de confiance dans IE, le navigateur utilisera son crédit réseau pour la connexion automatique.Cela peut être configuré sur Firefox aussi.

Vos utilisateurs ne pourront pas se connecter directement au site NTLM sans relever un défi NTLM.J'écrirais ce qui serait effectivement un proxy vers le site NTLM ;c'est-à-dire que votre code côté serveur aura les informations d'identification pour se connecter au site NTLM et qu'il transmettra les demandes de vos utilisateurs.

Comme vous le mentionnez, il s'agit de SharePoint (cracher) gardez à l'esprit que SharePoint propose de nombreux services Web que vous pouvez utiliser à cet effet (plutôt que de faire du screen-scraping).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top