IIS ApplicationPoolIdentity beengedése az SQL Serverbe

Ha egy webhelyet az IIS-ben az ApplicationPoolIdentity nevében futtatunk és a webhely mögött Windows integrált hitelesítéssel működő SQL Server áll, akkor ezt a virtuális fiókot kell beengednünk az SQL Serverbe.

Ez nehezebb, mint gondolnánk, ugyanis az SQL Server Management Studio az alábbi hibaüzenettel tud megörvendeztetni:

Alter failed for User ‘IIS APPPOOL\DefaultAppPool’.  (Microsoft.SqlServer.Smo)

The DEFAULT_SCHEMA clause cannot be used with a Windows group or with principals mapped to certificates or asymmetric keys. (Microsoft SQL Server, Error: 15259)

Szerencsére ez csak GUI probléma, az SQL Servernek egyébként semmi baja az AppPoolIdentity-vel, tehát némi kézimunkával leküzdhető a probléma:

  CREATE LOGIN [IIS APPPOOL\DefaultAppPool] FROM WINDOWS
  CREATE USER [DefaultAppPoolUser] FOR LOGIN [IIS APPPOOL\DefaultAppPool]
  sp_addrolemember N'bármilyen szerepkör', N'DefaultAppPoolUser'
Technorati-címkék: ,,
Advertisements

8 thoughts on “IIS ApplicationPoolIdentity beengedése az SQL Serverbe

  1. Pingback: IIS AppPool kontra SQL Server Agent « Balássy György szakmai blogja

  2. Pingback: IIS AppPool kontra SQL Server Agent - Balássy György szakmai blogja - devPortal

  3. Pál Miklós

    Ezt írtad, erre vonatkozik a kérédés:

    “Ha egy webhelyet az IIS-ben az ApplicationPoolIdentity nevében futtatunk és a webhely mögött Windows integrált hitelesítéssel működő SQL Server áll, akkor ezt a virtuális fiókot kell beengednünk az SQL Serverbe.”

    Ezzel kapcsolatos problémára keresem a magyarázatot:

    ASP.NET webalkalmazásban Forms hitelesítést használok, adatbázisban tárolt azonosítással. Ennek az adatbázisnak az eléréséhez használok egy connection stringet, amiben adatbázifelhasználót adok meg (nem Windows felhasználót). IIS alatt hostolva a fenti problémát tapasztalatm, vagyis a megadott user helyett az IIS user nevében kapcsolódott. Az IIS usert felvettem az SQL szerverbe, ezután működött. A kérdés a fent idézett mondattal kapcsolatos: ha az SQL szerverhez lehet csatlakozni Windows-felhasználóként (Windows-hitelesítéttel) és SQL felhasználóként egyránt, akkor miért nem képes a connection stringben megadott SQL server userrel bejelentkezni? Milyen feltételek mellett lenne erre képes?

    Kösz,

    Pál Miklós

    Reply
    1. Balássy György Post author

      Miklós, ezer százalékig biztos vagy benne, hogy jó a connection stringed és tényleg nem Windows integrált hitelesítéssel kellene bejelentkeznie, hanem egy SQL user nevében, és az SQL Server is Mixed Mode authentikációra van kapcsolva?

      Reply
  4. Pál Miklós

    1. SQL Server (2008 – NEM R2) | Server authentication = SQL Server and Windows Authentication mode
    2. A connection string jó, ha a VS által indított applikáció hostolja, akkor használja, de ha IIS alatt futtatom, és elrontom az adatbázisnevet, akor elromlik, de ha a felhasználónevet rontom el, akkor működik, mert már az SQL-be felvettem a fenti IIS… usert.
    3. Biztos, hogy SQL felhasználó van a connection stringben.

    Az IIS-en “DefaultAppPool”-ban van, nem az “ASP.NET 4.0”-ban. Nem tudom, hogy ennek lehet-e köze hozzá. (Ki fogom próbálni, habár a nevükön kívül nem látok különbséget közöttük. Mindkettő az ApplicationPoolidentity-re van állítva.)

    Reply
    1. Balássy György Post author

      Az IIS Managerben az IIS Authentication modulban az Anonymous Authenticationnél van az opció, hogy az IUSR felhasználó vagy az ApplicationPoolIdentity nevében fusson, de ennek nem szabadna kihatnia az adatbázis kapcsolatra, hiszen ott a connection string határozza meg az authentikációt.
      Biztos, hogy a connection stringben nem Windows authentikáció van megadva?

      Reply
  5. Pál Miklós

    A válaszod segítségével megtaláltam az okát: Integrated Security=True volt beállítva a connection stringben. A mentségem csak annyi, hogy a paraméter elnevezése nem túlságosan intuitív. Kösz!

    “When false, User ID and Password are specified in the connection. When true, the current Windows account credentials are used for authentication.
    Recognized values are true, false, yes, no, and sspi (strongly recommended), which is equivalent to true.”

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s