Как получить федеративный токен вошедшего в систему пользователя - сайт Razor c # - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь передать федеративный токен текущего пользователя, вошедшего в систему, в другой сервис Microsoft.

Я пользователь RazorPages и .net Core

Я получаю доступ к своему пользователю, как:

OnGet{
    var type = this.User.Identity.AuthenticationType; //AuthenticationTypes.Federation
    var token = ????? 
    var credentials =  new VssCredentials(token);


}

Я полностью застрял, откуда взять токен, я остановился на точке останова, чтобы осмотреть объект, и не нашел ничего очевидного.

1 Ответ

0 голосов
/ 20 декабря 2018

Для WsFederation, он не сохранит токен в User.Identity.

Вы можете попробовать options.Events.OnSecurityTokenValidated, чтобы получить доступ к токену и сохранить его.

    services.AddAuthentication(sharedOptions =>
            {
                sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
            })
            .AddWsFederation(options =>
            {
                //rest configuration
                options.Events.OnSecurityTokenValidated = context => {
                    var token = context.ProtocolMessage.GetToken();
                    var identity = new ClaimsIdentity();
                    identity.AddClaim(new Claim("token", token));
                    context.Principal.AddIdentity(identity);
                    return Task.CompletedTask;
                };
            })
            .AddCookie();

А затем получить доступ к токену из var claims = User.Claims;

...