Double Hop met ASP.Net-website en NHibernate

Achtergrond:

ASP.Net MVC-website. Gehost op IIS7, intranet.

Database: SQL Server. Toegankelijk via NHibernate.
In de verbindingsreeks wordt toegang ingesteld op Integrated Security: SSPI .
(Machtigingen voor DB zijn gebaseerd op Active Directory.)

In short, this is a typical double-hop situation,
where I need to pass client's credentials to IIS, and from IIS to SQL Server.

Het probleem:

The problem is a yellow screen of death, with the error:
Login failed for user 'MyDomain\UserThatRunsAppPool'.

Dingen die ik heb geprobeerd te doen om het probleem op te lossen:

  • Configuring authentication to enable only Windows Authentication
    and ASP.NET Impersonation
  • Setting Windows Authentication Provider to Negotiate:Kerberos
    (After disabling Kernel-mode authentication)
  • Making sure that UserThatRunsAppPool's delegation is set to:
    'Trust the user for delegation to any service (Kerberos only)' in Active Directory
  • Moving the NHibernate SessionFactory creation from Application_BeginRequest()
    to Session_Start()

Hoe succesvol ik ben geweest met mijn pogingen om het probleem op te lossen:

Helemaal niet.


EDIT:
I also tried setting IIS server's delegation to 'Trust the user for delegation to any service (Kerberos only)' (in Active Directory).

2

1 antwoord

In short, this is a typical double-hop situation,
where I need to pass client's credentials to IIS, and from IIS to SQL Server.

U hebt het probleem met de "delegatie" getroffen. Als u gezond wilt blijven, wijzigt u uw verbindingsreeks om een ​​SQL-gebruikersnaam + wachtwoord te gebruiken in plaats van SSPI.

Als je twee weken gefrustreerd debuggen en ruzie met je domeinbeheerders voelt, lees dan Plezier met de Kerberos Delegation-website .

3
toegevoegd
Als hij inlogt mislukt voor MyDomain \ UserThatRunsAppPool betekent dit dat de oproep zich niet voordoet als de HTTP-beller. Het plezier met delegatie zou alleen na inhalen als hij de imitatie eenmaal goedkeurde.
toegevoegd de auteur Remus Rusanu, de bron