Jag loggar in mot AD med följande kod och skapar sedan en ticket.
[DllImport("advapi32.dll", CharSet = CharSet.Auto)]
public static extern int LogonUser(String lpszUserName, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
public const int LOGON32_LOGON_INTERACTIVE = 2;
public const int LOGON32_PROVIDER_DEFAULT = 0;
if ((LogonUser(Username.Text, Domain.Text, Password.Text, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref token) != 0 && userIsActive > 0) || Functions.FixIntZero(Request.ServerVariables["SERVER_PORT"]) > 1000)
{
string returnUrl = Request.QueryString["ReturnUrl"];
if (returnUrl == null) returnUrl = "myPages.aspx";
}
...
Men nu ska jag även bygga en del integrationer mot Exchange och webdav mappar. Då behöver jag lösenordet igen. Det känns inte okej att lagra lösenordet i sessions för då sparas de väl på klienten i form av en cookie. Vill heller inte att användaren ska behöva skriva in lösenordet varje gång den ska ansluta mot en server.
Tror inte ticketen går att använda för att ansluta mot en webdav mapp heller.
MyCredentialCache = new System.Net.CredentialCache();
MyCredentialCache.Add(new System.Uri(strInboxURI),"BASIC", new System.Net.NetworkCredential(strUserName, strPassword, strDomain));
Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strInboxURI);
Request.Credentials = MyCredentialCache;
Det känns inte okej att lagra lösenordet i sessions för då sparas de väl på klienten i form av en cookie.
Nej det sparas inte på klienten som en cookie, lägger du det i en sessions så sparas sessionsidet som en cookies på klienten (eller i url:en om du kör cookieless).
Nu var det längesedan jag sysslade med det här. Men du borde väl kunna använda ASP.NET egna loginkontroller och sedan impersonate den personen som du loggar in som, då kommer dina sidor att köras som den personen och få alla de rättigheter som den personen har. Vet dock att det kan bli problem när man försöker accessa maskiner i flera led eftersom rättigheterna inte "följer med" över flera maskiner om man inte meckar en hel del...
Det känns inte okej att lagra lösenordet i sessions för då sparas de väl på klienten i form av en cookie.
Nej det sparas inte på klienten som en cookie, lägger du det i en sessions så sparas sessionsidet som en cookies på klienten (eller i url:en om du kör cookieless).
Och oavsett detta är det inte helt toppen att spara såpass känslig data som lösenord i sessionen, eftersom den kan hivas runt okrypterad kors och tvärs på nätverket om man inte kör sessionshanteringen inproc.