Пользовательская функция проверки подлинности на основе форм SharePoint Forms "Войти как"

На фундаменте SharePoint 2013 установлена ​​проверка подлинности на основе форм. Таким образом, для системной учетной записи я хочу реализовать функцию "Войти как", специально системную учетную запись можно выбрать пользователя из списка пользователей и войти в систему как этот пользователь. Другими словами, я хочу реализовать функцию олицетворения пользователя для системной учетной записи. Итак, как аутентифицировать другого пользователя без пароля в аутентификации на основе форм, если есть SPUser, SPClaim или SPPrincipal. И есть привилегии системной учетной записи? Также я попробовал следующее:

FormsAuthentication.SetAuthCookie(spUser.LoginName, false);

или же

 List<Claim> claims = new List<Claim>{
                    new Claim(ClaimTypes.Name, spUser.Name),
                    new Claim(ClaimTypes.NameIdentifier, spUser.UserId.ToString())
                };
 ClaimsIdentity identity = new ClaimsIdentity(claims);
 IClaimsPrincipal claimsPrincipal = ClaimsPrincipal.CreateFromIdentity(identity);
 var principal = SPFederationAuthenticationModule.Current.ServiceConfiguration.ClaimsAuthenticationManager.Authenticate(string.Empty, claimsPrincipal);
var transformedPrincipal = SPFederationAuthenticationModule.Current.ServiceConfiguration.ClaimsAuthenticationManager.Authenticate(SPContext.Current.Web.Url, claimsPrincipal);

var sessionToken = new Microsoft.IdentityModel.Tokens.SessionSecurityToken(transformedPrincipal, SPFederationAuthenticationModule.Current.SignInContext)
    {
        IsPersistent = false
    };

SPSecurity.RunWithElevatedPrivileges(() => SPFederationAuthenticationModule.Current.SetPrincipalAndWriteSessionToken(sessionToken, true));

Но это не решает мою проблему.

0 ответов

Другие вопросы по тегам