Configurer l'Authentification Kerberos avec la Délégation sur IIS 7 w/ Windows Server 2008
Situation:
J'ai un .NET asmx service web déployé sur mon serveur web. Ce service d'appels à un service sur un autre serveur (notre serveur SharePoint, si c'est pertinent). Je veux usurper l'identité d'/délégué à l'appel pour le service SharePoint à partir de mon service web en utilisant les informations d'identification du client.
Problème:
Je reçois une réponse 401 retour de service SharePoint lorsque j'appelle le Service Web et il appelle SharePoint.
De l'installation:
- Mon serveur web IIS 7. Le pool d'application est en cours d'exécution en vertu de "Service Réseau"
- Sur mon Serveur Windows 2003 contrôleur de domaine, le serveur web a "Approuvé pour la Délégation (Kerberos)" activé.
- Dans l'ISS mon application Authentification Anonyme Désactivé, l'emprunt d'identité est Activé, et l'Authentification Windows est Activé avec tous les trois fournisseurs de permis (à Négocier:Kerberos, Négocier, et NTLM)
- Le serveur SharePoint est configuré avec Anonyme est Activée, l'usurpation d'identité est activé et l'Authentification Windows Activé avec le SEUL fournisseur NTLM activé.
Je peux voir sur les journaux SharePoint que lorsque j'exécute localement dans Visual Studio un nom d'utilisateur est passé au travers (et le service fonctionne correctement) mais lorsque je l'exécute sur le serveur web AUCUN nom d'utilisateur est sur le fichier journal et j'obtiens une erreur 401
Ce que j'ai un réglage erroné de faire de la délégation Kerberos travail?
Idées? Merci!
OriginalL'auteur kralco626 | 2013-08-02
Vous devez vous connecter pour publier un commentaire.
Plate-forme:
À l'aide de IIS7 c'est ce que j'ai fait sur les DEUX serveurs. Le premier serveur et le second, que nous voulons à l'authentification Kerberos pour "hop".
Étape 1:
Pour le site IIS qui a les services dans ce que vous appelez (sur chaque serveur) allez dans le gestionnaire des services IIS, cliquez sur le site, sur la gauche, en vertu de Connexions et d'ouvrir le "Authentification" de la section sous IIS. Set "ASP.NET l'usurpation d'identité" est Activé et "Authentification Windows" sur Activé. Toutes les autres options en vertu de l'Authentification (Ananymous, Formes, etc.) doit être Désactivée.
Sous "Authentification Windows", cliquez droit et sélectionnez "Fournisseurs". Définissez le seul fournisseur à "Négocier:Kerberos" (les forces de Kerberos. Si vous le souhaitez, après que vous obtenez Kerberos de travail vous pouvez utiliser à la fois la "Négociation" et "NTLM" fournisseurs et supprimer "Négocier:Kerberos", afin que les clients incapables de faire Kerberos peut se connecter. Note: j'ai actuellement le mien réglé à "Négocier" et "NTLM" et il semble fonctionner)
Sous "Authentification Windows", cliquez droit et sélectionnez "Paramètres Avancés". Décochez la case "Activer Kernel-mode". (Mon extension de la Protection de l'option a été réglée sur off, ne pas essayer quelque chose d'autre)
Étape 2:
Pour chaque serveur, vous devez configurer des noms principaux de service. Les noms principaux de service serait le suivant (A OU B):
Un:
Si votre pool d'application est en cours d'exécution sous une IDENTITÉ qui est un COMPTE de DOMAINE ajoutez les noms principaux de service suivants à ce DOMAINE COMPTE sur le contrôleur de domaine
(si vous n'êtes pas en cours d'exécution sur le port par défaut, également ajouter un supplément de 3 entrées avec le nom de port-joint: http/COMPUTER_NETBIOS_NAME:PORT, etc.)
B:
Si votre pool d'application s'exécute sous l'IDENTITÉ de "service réseau" puis ajouter le même Spn comme ci-dessus à l'exception de remplacer "http" à "HÔTE", MAIS ajoute-COMPUTER_NETBIOS_NAME sur votre contrôleur de domaine.
Je travaille toujours mise en œuvre dans la production, mais c'est ce qui fonctionne pour moi, dans mon environnement de Test. Je vais garder cette mise à jour comme je l'ai trouver plus.
Remarque:
Ce fonctionne si vous êtes à l'aide de la COMPUTER_NETBIOS_NAME directement dans l'url lorsque vous vous connectez. Si vous utilisez un alias (www.mysite.mydomain.com) ou directement l'adresse IP cela ne fonctionnera pas. Je crois, bien que je n'ai pas entièrement testé, que vous auriez à folle les étapes ci-dessus, mais en remplaçant COMPUTER_NETBIOS_NAME avec l'alias ou l'adresse IP lors de l'ajout de la Spn. (ou l'ajouter à la fois le nom netbios et le nom d'alias/ip, pas vraiment sûr)
Aussi, si vous obtenez une erreur à propos d'un paramètre n'est pas valide pour la gestion intégrée... une fois que vous allumez l' "ASP.NET l'usurpation d'identité", alors vous pourriez avoir besoin d'ajouter
à votre site web.config dans le système.le serveur web de la section
OriginalL'auteur kralco626
Essayez ceci:
Déplacer
Negotiate
en haut de la liste. Et, dans leapplicationHost.config
fichier habituellement sousC:\Windows\System32\inetsrv\config
, ajouteruseKernelMode="true" useAppPoolCredentials="true"
à la<windowsAuthentication>
tag sous les<location>
numéro de série de votre application, comme ci-dessous:J'ai lu un peu de documentation en disant que vous avez à utiliser Négocier:Kerberos et la userKernalMode à false. Mais dès que je l'ai mis à faux je ne peux pas accéder au site web à tous.
Je n'ai pas utiliser Kerberos fournisseur. Juste Négocier et NTLM.
Et vous avez eu à le faire fonctionner? Avec le web service de l'appel d'une autre sur un autre serveur avec les informations d'identification du client?
Je l'ai eu à travailler. Avec BEAUCOUP d'étapes comme je l'ai indiqué dans ma réponse
OriginalL'auteur ataravati
Délégation exige de Kerberos. Vous aurez à faire le serveur SharePoint support authentication avec Kerberos.
Negotiate:Kerberos
ou tout simplementNegotiate
? Je veux juste préciser parce que @ataravati dit qu'il n'est pas à l'aide deKerberos
. Aussi, utiliserKerbero
s sur le serveur SharePoint dois-je tout simplement besoin d'ajouterNegotiate:Kerberos
à la liste des fournisseurs? dois-je enleverNTLM
, est-ce que je besoin d'installer ou autrement?Mon expérience avec la délégation est avec mon WCF personnalisés app qui parle à Active Directory, donc je ne peux pas vraiment aider avec les détails avec IIS/SharePoint.
Negotiate
permet à Windows de déterminer si l'utilisation deNTLM
ouKerberos
, et je pense queNegotiate:Kerberos
forcesKerberos
.Tout comme une mise à jour générale de ces deux articles que j'utilise pour essayer d'obtenir Kerberos mis en place sur SharePoint: social.technet.microsoft.com/wiki/contents/articles/... et windowsecurity.com/articles-tutorials/...
OriginalL'auteur Sean Hall