protected override void OnLoad(EventArgs e) { //base.OnLoad(e); try { string tk = Request.QueryString[WeChatTokenQueryStringName]; if (Request.IsAuthenticated) { if (!string.IsNullOrEmpty(tk)) { string[] usernamePassword = GetUserNamePasswordFromTK(tk).Split(':'); //if (!SPContext.Current.Web.CurrentUser.LoginName.EndsWith(string.Concat("|", usernamePassword[0]))) { SecurityToken stk = SPSecurityContext.SecurityTokenForFormsAuthentication(AppliesTo, Utils.BaseMembershipProvider().Name, Utils.BaseRoleProvider().Name, usernamePassword[0], usernamePassword[1], false); if (stk == null) { throw new Exception("生成的SecurityToken为null,可能是动态密码过期,请尝试刷新微信公众号命令,获取新的网站链接"); } SPFederationAuthenticationModule spFedAuthModule = this.Context.ApplicationInstance.Modules["FederatedAuthentication"] as SPFederationAuthenticationModule; SPSecurity.RunWithElevatedPrivileges(() => spFedAuthModule.SetPrincipalAndWriteSessionToken(stk, SPSessionTokenWriteType.WriteSessionCookie)); } } } else { if (string.IsNullOrEmpty(tk)) { throw new Exception("WeChatTokenQueryStringName 参数为空"); } else { string[] usernamePassword = GetUserNamePasswordFromTK(tk).Split(':'); SecurityToken stk = SPSecurityContext.SecurityTokenForFormsAuthentication(AppliesTo, Utils.BaseMembershipProvider().Name, Utils.BaseRoleProvider().Name, usernamePassword[0], usernamePassword[1], false); if (stk == null) { throw new Exception("生成的SecurityToken为null,可能是动态密码过期,请尝试刷新微信公众号命令,获取新的网站链接"); } SPFederationAuthenticationModule spFedAuthModule = this.Context.ApplicationInstance.Modules["FederatedAuthentication"] as SPFederationAuthenticationModule; SPSecurity.RunWithElevatedPrivileges(() => spFedAuthModule.SetPrincipalAndWriteSessionToken(stk, SPSessionTokenWriteType.WriteSessionCookie)); } } } catch (Exception ex) { MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.Weixin, Microsoft.SharePoint.Administration.TraceSeverity.Unexpected, ex.Message); MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.Weixin, Microsoft.SharePoint.Administration.TraceSeverity.Unexpected, ex.StackTrace); SPUtility.TransferToErrorPage(ex.Message); } }
protected void Page_Load(object sender, EventArgs e) { if (Request.RequestContext.HttpContext.User != null && Request.RequestContext.HttpContext.User.Identity != null && !Request.RequestContext.HttpContext.User.Identity.IsAuthenticated) { var userName = Request.QueryString["user"] ?? "jackey"; var token = SPSecurityContext.SecurityTokenForFormsAuthentication(new Uri(SPContext.Current.Web.Url), "FBAMember", "FBARole", userName, FBAMember.Md5Hash(userName), SPFormsAuthenticationOption.None); SPFederationAuthenticationModule fam = SPFederationAuthenticationModule.Current; fam.SetPrincipalAndWriteSessionToken(token); RedirectToSuccessUrl(); } else { RedirectToSuccessUrl(); } }
protected virtual SecurityToken GetSecurityToken(Login formsSignInControl) { if (formsSignInControl == null) { throw new ArgumentNullException("formsSignInControl"); } SecurityToken securityToken = null; //AAM settings must correnspond with the domain(s). SPIisSettings iisSettings = this.IisSettings; if (!iisSettings.UseClaimsAuthentication || !iisSettings.UseFormsClaimsAuthenticationProvider) { /* * ULSCat msoulscatWSSClaimsAuthentication = ULSCat.msoulscat_WSS_ClaimsAuthentication; * string str = string.Concat(this.LogPrefix, "Loaded the FormsSignInPage from request '{0}' but we are not in a context where claims forms sign is is enabled."); * object[] contextUri = new object[] { SPAlternateUrl.ContextUri }; * ULS.SendTraceTag(1430947, msoulscatWSSClaimsAuthentication, ULSTraceLevel.Unexpected, str, contextUri); */ throw new InvalidOperationException(); } //Initialize Providers try { ZimbraMembershipProvider z_membershipProvider = (ZimbraMembershipProvider)Membership.Providers["ZimbraMembershipProvider"]; ZimbraRoleProvider z_roleProvider = (ZimbraRoleProvider)Roles.Providers["ZimbraRoleProvider"]; } catch (Exception ex) { ProviderLogging.LogError(ex); } if (this.IsLoginControlInValidState(formsSignInControl)) { //string str1 = null; Uri appliesTo = this.AppliesTo; SPFormsAuthenticationProvider formsClaimsAuthenticationProvider = iisSettings.FormsClaimsAuthenticationProvider; CultureInfo invariantCulture = CultureInfo.InvariantCulture; object[] userName = new object[] { (formsSignInControl.RememberMeSet ? string.Empty : "non-"), formsSignInControl.UserName, formsClaimsAuthenticationProvider.MembershipProvider, formsClaimsAuthenticationProvider.RoleProvider, appliesTo, SPAlternateUrl.ContextUri }; //str1 = string.Format(invariantCulture, "{0}persistant security token for user '{1}' with membership provider '{2}' and role provider '{3}' with applies to '{4}' for request '{5}'.", userName); //ULS.SendTraceTag(1430977, ULSCat.msoulscat_WSS_ClaimsAuthentication, ULSTraceLevel.Verbose, string.Concat(this.LogPrefix, "Requesting a ", str1)); SPFormsAuthenticationOption sPFormsAuthenticationOption = SPFormsAuthenticationOption.None; if (formsSignInControl.RememberMeSet) { sPFormsAuthenticationOption = SPFormsAuthenticationOption.PersistentSignInRequest; } try { securityToken = SPSecurityContext.SecurityTokenForFormsAuthentication(appliesTo, formsClaimsAuthenticationProvider.MembershipProvider, formsClaimsAuthenticationProvider.RoleProvider, formsSignInControl.UserName, formsSignInControl.Password, sPFormsAuthenticationOption); //ULS.SendTraceTag(1430978, ULSCat.msoulscat_WSS_ClaimsAuthentication, ULSTraceLevel.Verbose, string.Concat(this.LogPrefix, "Successfully got a ", str1)); } catch //(Exception exception1) { /* * Exception exception = exception1; * ULSCat uLSCat = ULSCat.msoulscat_WSS_ClaimsAuthentication; * string str2 = string.Concat(this.LogPrefix, "Failed to get a ", str1, " Exception: '{0}'"); * object[] objArray = new object[] { exception }; * ULS.SendTraceTag(1430979, uLSCat, ULSTraceLevel.Verbose, str2, objArray); */ securityToken = null; //SPSecurityContext.SecurityTokenForContext } } else { /* * ULSCat msoulscatWSSClaimsAuthentication1 = ULSCat.msoulscat_WSS_ClaimsAuthentication; * string str3 = string.Concat(this.LogPrefix, "Cancelling sign-in for request '{0}'."); * object[] contextUri1 = new object[] { SPAlternateUrl.ContextUri }; * ULS.SendTraceTag(1430976, msoulscatWSSClaimsAuthentication1, ULSTraceLevel.VerboseEx, str3, contextUri1); */ securityToken = null; } return(securityToken); }