Я создаю приложение с ASP.NET MVC и WebAPI, используя этот шаблон: Azure AD B2C WebApp/WepAPI. Я настроил свой Azure B2C AD через файлы web.config, и когда я нажимаю «Войти», я вижу своих поставщиков удостоверений. Вход в систему работает до сих пор (я вижу свое имя пользователя в правом верхнем углу), и я могу выполнить «Список дел» - «Ввод».Azure B2C - не удалось получить токен молча
Но как только я остановлю отладчик и перезапущу приложение, нажав F5, я получаю сообщение об ошибке, когда я нажимаю «Список дел» - снова.
Не удалось получить токен молча. Вызов метода AcquireToken текст ->Code
Это происходит, вызывает пользователь еще проверку подлинности, но NaiveSessionCache пуст после приложения перезагружается. Возможное решение было бы, чтобы сохранить маркер в OnAuthorizationCodeReceived Handler, но я выгляжу немного странно для меня
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-класс для дальнейшего использования в моем Угловой-SPA-клиент?
- Это хорошая идея хранить токен в качестве претензии в пределах OnAuthorizationCodeReceived Handler?
- Решение использует пакет Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory. Есть Microsoft.IdentityModel.Clients.ActiveDirectory еще не поддерживает Azure B2C?
вы можете принять ответ, если это вам помогло. Это также поможет другим. –
NaiveSessionCache сохраняют токен в состоянии сеанса, который предположительно будет доступен в течение всего сеанса пользователя. Он используется в образцах. Этого недостаточно? Почему вы предпочитаете хранить в БД, а не в сеансе? У меня есть связанный вопрос [Можно ли использовать NaiveSessionCache от Azure-Samples Azure Active Directory OpenId Connect] (// stackoverflow.com/q/41864737) –