我有一個自定義成員資格提供程序,我在SharePoint 2007服務和.NET Web應用程序中都使用它們。現在我正在嘗試將SharePoint平臺更新到2010 Foundation,而我的提供程序不起作用。下面是兩個例子,它們都對用戶進行身份驗證,並使用相同的密鑰設置身份驗證cookie。在SharePoint 2010中使用我的舊成員資格提供程序
MembershipProvider provider = Membership.Providers["Provider"];
//Alternative one using cookiename (ProviderUserKey from other source then provider)
if (provider.ValidateUser(user, passwd))
{
FormsAuthentication.SetAuthCookie(cookieName, false);
Response.Redirect("/");
}
else
{
ShowErrorMsg();
}
//Alternative two using provider to get ProviderUserKey same as cookieName above
if (provider.ValidateUser(user, passwd))
{
MembershipUser memberUser = provider.GetUser(user, false); //false or true doesnt matter in this provider
FormsAuthentication.SetAuthCookie(memberUser.ProviderUserKey.ToString(), false);
Response.Redirect("/");
}
else
{
ShowErrorMsg();
}
問題是,SharePoint 2010使用基於聲明的身份,並且嘗試了以下操作但沒有成功。
MembershipProvider provider = Membership.Providers["Provider"];
if (provider.ValidateUser(user, passwd))
{
SPFormsAuthenticationProvider authProvider = IisSetting.FormsClaimsAuthenticationProvider;
SecurityToken token = SPFormsUserNameSecurityTokenHandler.CreateSecurityToken(authProvider.MembershipProvider, cookieName, passwd);
SPFederationAuthenticationModule.Current.SetPrincipalAndWriteSessionToken(token);
}
但這不適用於我。有誰知道如何基於另一個密鑰的索賠身份,然後提供的用戶名。
檢查兩個版本在配置文件中的machineKey,讓他們一樣。 – Pushpendra