WIF Single Signon Передача нескольких заявок на веб-сайт RelyingParty - PullRequest
0 голосов
/ 22 декабря 2018

Я следовал этой статье, чтобы создать единый вход с помощью 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();
    }
...