2010-06-03 15 views
3

J'essaie de configurer un site Web interne qui contactera un autre service back-end du réseau au nom de l'utilisateur à l'aide d'une requête HttpWebRequest. Je dois utiliser l'authentification intégrée de Windows sur l'application ASP.NET car le système principal ne prend en charge que ce type d'authentification.Authentification déléguée kerberos de bout en bout dans ASP.NET

Je suis capable de configurer IWA sur l'application ASP.NET, et il utilise kerberos comme je le souhaite. Cependant, lorsque l'authentification est déléguée au système backend, elle ne fonctionne plus. En effet, le système principal ne prend en charge que Kerberos IWA, mais la délégation pour une raison quelconque - même si la requête entrante est authentifiée par kerberos - convertit l'authentification en NTLM avant de passer au système principal.

Est-ce que quelqu'un sait ce que je dois faire sur l'application ASP.NET afin de lui permettre de transmettre l'identité en utilisant kerberos?

J'ai essayé ce qui suit, mais il ne semble pas fonctionner

CredentialCache credentialCache = new CredentialCache(); 
credentialCache.Add(request.RequestUri, "Negotiate", CredentialCache.DefaultCredentials.GetCredential(request.RequestUri, "Kerberos")); 
request.Credentials = credentialCache; 

J'ai aussi essayé de mettre « Kerberos » où il est dit maintenant « négocier », mais il ne semble pas faire beaucoup.

Répondre

1

Dans votre application, il vous suffit d'utiliser DefaultCredentials:

request.UseDefaultCredentials = true; 

Cependant, il y a un travail à faire sur Active Directory:

  • Mettre en place un SPN sur votre compte de pool d'applications votre application frontale
  • Configurer un SPN sur votre compte de pool d'applications pour votre application principale
  • Configurer la délégation à partir de la première application pool de lication au second SPN