Функция для запроса пользовательских утверждений и токена от Identity Server? - PullRequest
0 голосов
/ 18 февраля 2019

Каков наилучший способ получения заявок пользователей и токенов после входа на сервер идентификации?

У меня есть веб-приложение .Net Core MVC.Я перенаправляю на сервер идентификации, регистрируюсь, затем перенаправляю обратно в мое веб-приложение.

Из моего приложения я бы хотел запросить утверждения пользователя и токен с сервера идентификации.

Есть ливызов метода, чтобы сделать это?

Я просмотрел учебники, искал и нашел библиотеки (oidc-client-js, oidc.usermanager для javascript, который обрабатывает это. OidcClient для нативных приложений c #), которые обрабатывают это поведение, но не для веб-приложения на c # - поэтому я понимаю, что, может быть, то, о чем я прошу, не является соглашением, но я все равно буду признателен за понимание этого вопроса.

Редактировать:

Чтобы уточнить,в руководствах по веб-приложениям на c #, а именно в уроке № 3, я не вижу, как утверждения и информация о токене становятся доступными с рисунка 1 до рисунка 2.

Кроме того, я пытаюсь вызывать и обрабатывать эти объекты вc #, а не html.

Рисунок 1

figure 1

Рисунок 2

figure 2

Спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

В контроллере вы можете удалить заявки, такие как

 var claims = User.Claims;

Получить токен доступа / идентификатор токена / токен обновления:

 var accessToken = HttpContext.GetTokenAsync("access_token").Result;
 var idToken = HttpContext.GetTokenAsync("access_token").Result;
 var refreshToken = HttpContext.GetTokenAsync("access_token").Result;

Для этого вам необходимо зарегистрировать промежуточное ПО OIDC.внутри ConfigureServices следующим образом (убедитесь, что для SaveTokens установлено значение true):

.AddOpenIdConnect(options => {
// Set all your OIDC options...

// and then set SaveTokens to save tokens to the AuthenticationProperties
options.SaveTokens = true;
});

На странице бритвы mvc вы можете получить информацию:

@using Microsoft.AspNetCore.Authentication
@{
    ViewData["Title"] = "Home Page";
}

<dl>
    @foreach (var claim in User.Claims)
    {
        <dt>@claim.Type</dt>
        <dd>@claim.Value</dd>
    }

</dl>

<dt>access token</dt>
<dd>@await ViewContext.HttpContext.GetTokenAsync("access_token")</dd>

<dt>ID token</dt>
<dd>@await ViewContext.HttpContext.GetTokenAsync("id_token")</dd>

<dt>refresh token</dt>
<dd>@await ViewContext.HttpContext.GetTokenAsync("refresh_token")</dd>
...