Как получить «токен доступа B2C JWT» от зарегистрированного пользователя? - PullRequest
1 голос
/ 20 июня 2019

Я работаю с .Net Core Web API и .Net Core Web MVC Application. Они оба используют Azure AD B2C для аутентификации пользователей. Но чтобы получить ответ от HttpRequest от Web API, мне нужно предоставить токен доступа JWT от B2C для вошедшего в систему пользователя в моем веб-приложении MVC. Есть ли способ получить этот токен доступа внутри контроллера, используя аутентифицированного «пользователя».

Я попытался получить доступ к заявкам вошедшего в систему пользователя, но мне не повезло, я также использовал jwt.ms для проверки того, что рабочий процесс B2C работает хорошо, и что токен JWT генерируется и работает. Приложение MVC аутентифицирует пользователя, и веб-API работает нормально с жестко закодированным токеном. Мне просто нужно получить токен доступа у вошедшего в систему пользователя, а не делать это жестко.

Я ожидаю, что смогу получить токен доступа B2C JWT, чтобы впоследствии я мог передать его в Web Api и защитить свои запросы.

Ответы [ 3 ]

2 голосов
/ 21 июня 2019

Получив некоторую помощь от команды GitHub MS AzureADB2C.UI, мы смогли решить эту проблему. Проблема заключалась в том, что токены не сохраняются по умолчанию в библиотеке, поэтому нам нужно было настроить OIDC, чтобы указать, что токены должны быть сохранены для будущего использования в приложении. И вот пример кода конфигурации «Автозагрузка» и пример того, как запросить «токен доступа JWT» из контроллера.

Startup.cs:

    services.Configure(AzureADB2CDefaults.OpenIdScheme, options => {
            options.SaveTokens = true;
    });

Контроллер:

    string idToken = await HttpContext.GetTokenAsync("id_token");

Более подробную информацию о том, как была решена проблема, можно найти по следующей ссылке: https://github.com/aspnet/AspNetCore/issues/11424

1 голос
/ 21 июня 2019

Вы можете обратиться к этому примеру приложения .

Он использует промежуточное программное обеспечение ASP.NET Core Azure AD B2C для аутентификации конечного пользователя и MSAL.NET для получения, кэширования и обновления токена доступа.

Маркер доступа получен в AzureADB2COpenIdConnectOptionsConfigurator , класс .

Пример кода для метода контроллера, ссылающегося на токен доступа: здесь .

0 голосов
/ 20 июня 2019

Нужна ли вам строка токена? Если это так, вы можете получить доступ к заголовкам, используя HttpContext в контроллере? HttpContext будет иметь коллекцию заголовков, которые были переданы в

...