Получение id_token от IdentityServer4? - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть следующие настройки потока для сервера IdentityServer4:

    services.AddAuthentication(options =>
        {
            options.DefaultScheme = "Cookies";
            options.DefaultChallengeScheme = "oidc2";
        })
        .AddCookie("Cookies")
        .AddOpenIdConnect("oidc2", options =>
        {
            options.SignInScheme = "Cookies";

            options.Authority = "http://localhost:5000";
            options.RequireHttpsMetadata = false;

            options.ClientId = "mvc";
            options.ClientSecret = "secret";
            options.ResponseType = "code id_token";

            options.SaveTokens = true;
            options.GetClaimsFromUserInfoEndpoint = true;

            options.Scope.Add("api1");
            options.Scope.Add("offline_access");
            options.ClaimActions.MapJsonKey("website", "website");

        });

Что работает нормально, пользователь аутентифицирован правильно.

Я хотел бы получить доступ к id_token в ответе, такЯ вижу отображаемое имя пользователя.

Как мне это сделать?Я посмотрел вокруг HttpContext.User, но не нашел много.

1 Ответ

0 голосов
/ 11 сентября 2018

Если пользователь аутентифицирован правильно, то в контроллере MVC вы сможете привести пользователя к ClaimsPrincipal и получить доступ к заявкам пользователя:

ClaimsPrincipal user = User as ClaimsPrincipal;
Claim nameClaim = user.FindFirst("name");
string name = nameClaim.Value
...