1

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 を作成する方法を知っている人はいますか。

4

1 に答える 1

0

次のように使用する必要があるよりも使用Claim-based authenticationしているFBA場合:

  bool status = SPClaimsUtility.AuthenticateFormsUser(Context.Request.UrlReferrer, UserName, Password);
  if (status)
  {
          // do your stuff.
  }
于 2012-10-01T05:54:51.857 に答える