На фундаменте 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));
Но это не решило мою проблему.