Vad är "Best practice" när det gäller inloggning i en windows applikation som kör mot en sql server databas? Som det är nu så ligger lösenordet till sqlservern okryperat i en fil (ajabaja). Tänkte lite om man kunde integrera med domäninloggningen men då krävs ju just en domän vilket kanske inte alla kunder har. Ett annat alternativ är ju att skapa en sql server användare. Ett tredje är att kryptera filen som applikationen använder. Det beror ju på hur säkert du vill ha det. Om du på något sätt, vilket som helst, låter själva kontrollen ske lokalt på datorn, så går det att komma förbi, och i den bemärkelsen är det en enda vettiga att låta den server som tillhandahåller infon också kontrollera användaren (typ "skicka användarnamn och lösenord varje gång, och kräv att användaren skriver in det"). Beror mycket på vilken typ av applikation det handlar om. I de fall jag jobbar med vill man sällan ha IIS och databas på samma sida av brandväggen och inte ha databasen direkt åtkomlig från IIS:en. Det blir därför ofta en tjänst som sköter databasanropen (via WCF/remoting). Detta är en Klient-Server lösning som finns internt på företagets nätverk bakom brandväggar o sånt. Alltså en vanlig desktop-applikation som kör mot en SQL-server. IIS används inte ens. Nu har jag läst på lite och tänkte först på en lösning där man skapar logins på sqlservern och sen använder sig av en applicationrole för att få extra behörighet till databasen. Dock känns det jäkligt drygt att administrera sql-serveranvändarna när man skapar/tar bort eller ändrar konto. Speciellt eftersom vi kör på det sättet att man enkelt ska kunna byta mellan databaser i applikationen. Ett login gäller ju för servern och inte för en specifik databas. Utan då måste man skapa users och grupper som ska administreras om man vill se vilken behörighet dom har i applikatonen utan att först logga in.Inloggning windows applikation
Hur brukar ni göra?Sv: Inloggning windows applikation
Om du har en krypterad fil så kan man (åtminstone i teorin) helt enkelt följa med ditt program i koden och cracka programmet, för att både se hur den är krypterad, med vilket lösenord och vad du har fått för sql-lösenord.
Beroende på hur du lägger upp det kan domäninloggning eller sqlserverinloggning funka.
Det duger inte att ha en server som i princip bara svarar "ja, han har tillgång", eller skickar tillbaka ett lösenord, det måste vara så att samma server som tillhandahåller data är den som gör själva kontrollen.
Sen är det ju så att det är väldigt sällan man faktiskt behöver så starkt säkerhet. Och vad som då är vanligast får andra svara på.Sv: Inloggning windows applikation
Jag skapar då en domänanvändare med de rättigheter som behövs och kör tjänsten som denna.
Om jag inte kan använda domänanvändaren för vanliga windowsapplikationer skapar jag alltid en eller i något fall två sqlanvändare med minimum av rättigheter (i det fallet kunden vill att bara vissa användare skall kunna skriva i databasen får användaren ange lösenordet själv). Kryptering är sällan värt besväret så jag brukar bara ta något enkelt (typ xor/base64) och lagra i filen eller programmet. Den som vill kan ju ändå använda reflektor/debugger för att lista ut vilken kryptering som används.
Om du har behov av att användarna verkligen inte skall kunna gå in i databasen och sabba dina affärsregler så får du skapa vyer och sp:s och endast ge sql- eller domänanvändaren tillgång till dessa.Sv:Inloggning windows applikation
Sv: Inloggning windows applikation