public bool Authenticate(string domain, string userName, string password, bool rememberMe) { using (var impersonation = new Impersonation(domain, userName, password)) { if (impersonation.Authenticated) { using (var wi = WindowsClaimsIdentity.GetCurrent()) { SecurityToken securityToken = GetSecurityTokenFromWindowsIdentity(wi, HttpContext.Current); SPSessionTokenWriteType writeCookie = SPSecurityTokenServiceManager.Local.UseSessionCookies && rememberMe ? SPSessionTokenWriteType.WriteDefaultCookie : SPSessionTokenWriteType.WriteSessionCookie; if (securityToken == null) { throw new ArgumentNullException("securityToken"); } SPSecurity.RunWithElevatedPrivileges( () => SetPrincipalAndWriteSessionToken(securityToken, writeCookie)); } return(true); } } return(false); }
protected virtual SPSessionTokenWriteType GetSessionTokenWriteType(Login formsSignInControl) { if (formsSignInControl == null) { throw new ArgumentNullException("formsSignInControl"); } SPSessionTokenWriteType sPSessionTokenWriteType = SPSessionTokenWriteType.WriteDefaultCookie; if (!SPSecurityTokenServiceManager.Local.UseSessionCookies && !formsSignInControl.RememberMeSet) { sPSessionTokenWriteType = SPSessionTokenWriteType.WriteSessionCookie; } return(sPSessionTokenWriteType); }
private static void SetPrincipalAndWriteSessionToken(SecurityToken securityToken, SPSessionTokenWriteType sessionCookie) { SPFederationAuthenticationModule fam = SPFederationAuthenticationModule.Current; if (fam == null) throw new Exception("Could not find an instance of the SPFederationAuthenticationModule"); MethodInfo setPrincipalAndWriteSessionToken = typeof(SPFederationAuthenticationModule).GetMethod("SetPrincipalAndWriteSessionToken", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.NonPublic) ?? typeof(SPFederationAuthenticationModule).GetMethod("SetPrincipalAndWriteSessionToken", new[] { typeof (SecurityToken), typeof (SPSessionTokenWriteType) }); if (setPrincipalAndWriteSessionToken == null) { throw new Exception( "Could not find the SPFederationAuthenticationModule.SetPrincipalAndWriteSessionToken method"); } setPrincipalAndWriteSessionToken.Invoke(fam, new object[] { securityToken, sessionCookie }); //fam.SetPrincipalAndWriteSessionToken(securityToken, sessionCookie); }
private static void SetPrincipalAndWriteSessionToken(SecurityToken securityToken, SPSessionTokenWriteType sessionCookie) { SPFederationAuthenticationModule fam = SPFederationAuthenticationModule.Current; if (fam == null) { throw new Exception("Could not find an instance of the SPFederationAuthenticationModule"); } MethodInfo setPrincipalAndWriteSessionToken = typeof(SPFederationAuthenticationModule).GetMethod("SetPrincipalAndWriteSessionToken", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.NonPublic) ?? typeof(SPFederationAuthenticationModule).GetMethod("SetPrincipalAndWriteSessionToken", new[] { typeof(SecurityToken), typeof(SPSessionTokenWriteType) }); if (setPrincipalAndWriteSessionToken == null) { throw new Exception( "Could not find the SPFederationAuthenticationModule.SetPrincipalAndWriteSessionToken method"); } setPrincipalAndWriteSessionToken.Invoke(fam, new object[] { securityToken, sessionCookie }); //fam.SetPrincipalAndWriteSessionToken(securityToken, sessionCookie); }