SharePoint 2010-在声明web应用程序上进行单点登录而不使用密码,如SetAuthCookie()
我正在处理这样一个场景:用户单击SAP站点中的链接,将他/她带到SharePoint站点。为了完成单点登录,http模块接受SAP cookie,获取用户名并将用户登录到SharePoint 当在SP 2007上实现时,它曾经是有效的:只需调用SetAuthCookie(用户名)就可以了,用户可以访问SharePoint 2007站点,一切都按预期进行 在SharePoint 2010声称的web应用程序上,它停止工作。这几乎是意料之中的事,佩尔。所以我开始替换SetAuthCookie()代码,但我面临两个问题 这是我的自定义登录代码。是否存在不需要密码的SetAuthCookie()等价物?(无需硬编码url和pwd…只是一个原型)SharePoint 2010-在声明web应用程序上进行单点登录而不使用密码,如SetAuthCookie(),sharepoint,sharepoint-2010,forms-authentication,claims-based-identity,Sharepoint,Sharepoint 2010,Forms Authentication,Claims Based Identity,我正在处理这样一个场景:用户单击SAP站点中的链接,将他/她带到SharePoint站点。为了完成单点登录,http模块接受SAP cookie,获取用户名并将用户登录到SharePoint 当在SP 2007上实现时,它曾经是有效的:只需调用SetAuthCookie(用户名)就可以了,用户可以访问SharePoint 2007站点,一切都按预期进行 在SharePoint 2010声称的web应用程序上,它停止工作。这几乎是意料之中的事,佩尔。所以我开始替换SetAuthCookie()代码
多谢 终于能够回答我自己的问题了(讨厌回答我自己,但有时候就是这样…),这些都是细节。希望它能帮助某人,某处
private SPIisSettings IisSettings
{
get
{
SPWebApplication webApp = SPWebApplication.Lookup(new Uri("http://virtualcasa1/sites/blank2"));//XXX
SPIisSettings settings = webApp.IisSettings[SPUrlZone.Default];
return settings;
}
}
private SecurityToken GetSecurityToken()
{
SecurityToken token = null;
SPIisSettings iisSettings = IisSettings;
Uri appliesTo = new Uri("http://virtualcasa1");//XXX
SPFormsAuthenticationProvider authProvider = iisSettings.FormsClaimsAuthenticationProvider;
token = SPSecurityContext.SecurityTokenForFormsAuthentication(appliesTo, authProvider.MembershipProvider, authProvider.RoleProvider, "userfba", "pa55word");//XXX
return token;
}
private void SignIn()
{
SecurityToken token = null;
if ((token = GetSecurityToken()) != null)
{
SPFederationAuthenticationModule fam = SPFederationAuthenticationModule.Current;
HttpContext c = HttpContext.Current;
fam.SetPrincipalAndWriteSessionToken(token);
c.Response.Redirect("/sites/blank2");//XXX
}
}
void OnAuthenticateRequest(object sender, EventArgs e)
{
HttpContext c = HttpContext.Current;
if (c.Request.Url.ToString().ToLowerInvariant().Contains("/authenticate.aspx"))
{
SignIn();
}