SharePoint 2007 サービスと .NET Web アプリの両方で使用するカスタム メンバーシップ プロバイダーがあります。現在、SharePoint プラットフォームを 2010 Foundation に更新しようとしていますが、プロバイダーが機能しません。以下は、ユーザーを認証し、同じキーで認証 Cookie を設定する 2 つの例です。
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 がクレーム ベースの ID を使用していることです。次のことを試しましたが、成功しませんでした。
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);
}
しかし、これは私にはうまくいきません。別のキーと提供されたユーザー名に基づいてクレーム ID を作成する方法を知っている人はいますか。