示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#4
0
        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);
        }