Я следовал этой статье, чтобы создать единый вход с помощью WIF.http://www.primaryobjects.com/2013/08/08/using-single-sign-on-with-windows-identity-foundation-in-mvc-net/
Единый вход работает нормально, но я могу получить имя пользователя только на проверяющем веб-сайте.Я хочу передать некоторую дополнительную информацию, такую как EmplId, Имя и т. Д., Но не смог получить ничего, кроме имени пользователя.
Я попытался передать аутентификацию форм в SessionAuthenticationModule.Как показано ниже
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, loginModel.Username));
claims.Add(new Claim(ClaimTypes.Email, "john@doe.com"));
claims.Add(new Claim("EmplId", "1234"));
var claimsIdentity = new ClaimsIdentity(claims, "Forms");
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
var sam = FederatedAuthentication.SessionAuthenticationModule;
var token = new SessionSecurityToken(claimsPrincipal, new TimeSpan(0, 30, 0));
token.IsPersistent = FederatedAuthentication.FederationConfiguration.WsFederationConfiguration.PersistentCookiesOnPassiveRedirects;
token.IsReferenceMode = sam.IsReferenceMode;
sam.WriteSessionTokenToCookie(token);
Также передал принципал претензий в метод ProcessSignInRequest
private static string ProcessSignIn(Uri url, ClaimsPrincipal user)
{
var requestMessage = (SignInRequestMessage)WSFederationMessage.CreateFromUri(url);
var signingCredentials = new X509SigningCredentials(CustomSecurityTokenService.GetCertificate(ConfigurationManager.AppSettings["SigningCertificateName"]));
// Cache?
var config = new SecurityTokenServiceConfiguration(ConfigurationManager.AppSettings["IssuerName"], signingCredentials);
var sts = new CustomSecurityTokenService(config);
var responseMessage = FederatedPassiveSecurityTokenServiceOperations.ProcessSignInRequest(requestMessage, user, sts);
return responseMessage.WriteFormPost();
}