Я создаю приложение с ASP.NET MVC и WebAPI, используя этот шаблон: Azure AD B2C WebApp / WepAPI. Я настроил свой Azure B2C AD с помощью файлов web.config, и когда я нажимаю «Войти», я вижу своих поставщиков удостоверений. Логин пока работает (я вижу свое имя пользователя в правом верхнем углу), и я могу выполнить действие «Список дел».
Но как только я останавливаю отладчик и перезапускаю приложение, нажимая F5, я получаю сообщение об ошибке, когда снова нажимаю «To-Do List» -Action.
Не удалось получить токен без уведомления. Вызвать метод AcquireToken с текстом -> Код
Это происходит, потому что пользователь по-прежнему аутентифицирован, но NaiveSessionCache пуст после перезапуска приложений. Возможным решением было бы сохранить токен в обработчике OnAuthorizationCodeReceived, но мне это кажется немного странным.
private async Task OnAuthorizationCodeReceived(AuthorizationCodeReceivedNotification notification)
{
string userObjectID = notification.AuthenticationTicket.Identity.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant, string.Empty, string.Empty);
ClientCredential credential = new ClientCredential(clientId, clientSecret);
string mostRecentPolicy = notification.AuthenticationTicket.Identity.FindFirst(Startup.AcrClaimType).Value;
AuthenticationContext authContext = new AuthenticationContext(authority);
AuthenticationResult result = await authContext.AcquireTokenByAuthorizationCodeAsync(notification.Code, new Uri(redirectUri), credential, new string[] { clientId }, mostRecentPolicy);
// Store token in ClaimsIdentity
notification.AuthenticationTicket.Identity.AddClaim(new System.Security.Claims.Claim("Token", result.Token));
}
- Как мне исправить получение токена-носителя с помощью класса AuthenticationContext для дальнейшего использования в моем клиенте Angular-SPA?
- Хорошая идея - хранить токен в виде заявки в Обработчик OnAuthorizationCodeReceived?
- Решение использует Microsoft.Experimental.IdentityModel.Clients .ActiveDirectory. Microsoft.IdentityModel.Clients.ActiveDirectory все еще не поддерживает Azure B2C?