Пользовательская функция проверки подлинности на основе форм SharePoint Forms «Войти как» - PullRequest
0 голосов
/ 18 октября 2018

На фундаменте 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));

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

...