2008-09-04 6 views
1

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

Ce qu'ils veulent faire est d'avoir un button sur le site je travaille dans la zone privée qui les enverra au le site nt authentifié, mais pas les obliger à se connecter à ce site en passant la place nom d'utilisateur et mot de passe qu'ils ont utilisé pour se connecter à mon site à l'autre site pour eux.

Est-ce possible? et comment pourrais-je l'accomplir? Y a-t-il une meilleure manière de faire cela?

Répondre

1

Voici une théorie (non testée), dont les détails dépendront grandement des types d'authentification que le site Sharepoint acceptera. Je vais aborder Basic, puisque c'est le plus facile.

Vous allez écrire du code JavaScript qui utilise XMLHttpRequest pour soumettre une requête au site Sharepoint et ajouter son nom d'utilisateur et son mot de passe aux en-têtes de la requête. Leur navigateur va exécuter ce JavaScript, et se connecter au site Sharepoint. Maintenant, lorsqu'ils cliquent sur le lien, le navigateur du client doit avoir les informations d'identification mises en cache à envoyer au site Sharepoint.

Problèmes possibles:

  • XMLHttpRequest ne partage permet pas interdomaine auth
  • Browser et XHR ne auth information
  • Sharepoint et XHR ne peuvent pas se mettre d'accord sur la méthode auth

Une autre option consiste à proxy la connexion à Sharepoint, ce qui vous permet de vous connecter côté serveur (contourner les limites XHR et la sécurité du navigateur) - mais nécessitant une charge sur votre serveur et éventuellement certains UR L problèmes ciblés.

0

Comment l'autre site va-t-il valider 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 le mot de passe, pas le mot de passe lui-même et n'utilisez le mot de passe que lors de la validation).

Et si votre site fournissait un jeton à l'utilisateur, qui le présente au nouveau site, qui à son tour demande à votre site de valider le jeton. Fondamentalement, le deuxième site vous fait confiance pour leur dire qui est l'utilisateur. Tout se décompose si le second site utilise réellement les comptes Windows pour autre chose que récupérer simplement un nom d'utilisateur (par exemple des permissions sur le fichier sous-jacent), puisque l'utilisateur n'est pas connecté comme compte d'utilisateur Windows réel dans ce scénario.

0

Si vous devez vous authentifier par rapport au second site, vous devrez peut-être générer un nouveau thread et appeler l'API LogonUser de Windows. Une fois que vous avez le jeton de sécurité, assignez-le au nouveau thread et faites votre connexion via ce thread. LogonUser requiert des privilèges étendus, et n'est pas du code Managed, donc il y a quelques problèmes d'utilisation plutôt graves. Mais c'est le seul travail que j'ai pu trouver pour obtenir un site authentifié par les formulaires qui parle à un service/site authentifié par Windows.

Espérons que cela aide.

0

S'agit-il d'un environnement intranet? Si c'est le cas, ils ne devraient pas avoir à se connecter de toute façon. Si sharepoint est configuré à l'aide de "Integrated Authentication" et que le site est répertorié en tant que site de confiance dans IE, le navigateur utilisera le crédit réseau pour la connexion automatique. Cela peut également être configuré sur firefox.

0

Vos utilisateurs ne pourront pas se connecter directement au site NTLM sans avoir un problème NTLM. J'écrirais ce qui serait effectivement un proxy au site NTLM; Par exemple, votre code côté serveur aura des informations d'identification pour se connecter au site NTLM et il transmettra les demandes de vos utilisateurs. Comme vous le mentionnez, SharePoint (spit) a à l'esprit que SharePoint dispose d'un ensemble de services Web que vous pouvez utiliser pour cela (plutôt que d'effectuer un scrappage d'écran).