1

SharePoint 2007 서비스 및 .NET 웹 응용 프로그램에서 모두 사용하는 사용자 지정 멤버 자격 공급자가 있습니다. 이제 SharePoint 플랫폼을 2010 Foundation으로 업데이트하려고하는데 공급자가 작동하지 않습니다. 다음은 사용자를 인증하고 동일한 키를 사용하여 인증 쿠키를 설정하는 두 가지 예입니다.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에서 클레임 기반 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를 다른 키에 기반하여 제공된 사용자 이름을 기반으로하는 방법을 알고 있습니까?

+1

확인하고는 동일합니다. – Pushpendra

답변

0

당신은 당신처럼 사용하는 것보다 FBAClaim-based authentication를 사용하는 경우 : 두 버전의 설정 파일에 machinekey에 대한

bool status = SPClaimsUtility.AuthenticateFormsUser(Context.Request.UrlReferrer, UserName, Password); 
    if (status) 
    { 
      // do your stuff. 
    } 
+0

UserName == cookieName 일 경우 제대로 작동하지만 – ADN

+0

이 적절하지 못합니다. 그러면 함수가'UserName == cookieName' 조건에서 작동 했습니까? – Jigs

+0

코드는 AuthenticateFormUser가 클레임 쿠키에 사용자 이름을 설정하기 때문에 해당 조건에서만 작동합니다. – ADN