У меня есть небольшое приложение, которое я использую для тестирования, оно находится в Asp.Net Core 1.1 как для веб-приложения, так и для API, проверка подлинности выполняется с помощью Azure AD B2C. Я пытаюсь переместить его на .Net Core 2.0, но не могу понять, как заставить его работать. Я попытался использовать оба образца из GitHub Azure-Samples для веб-приложения и API, но при попытке получить несанкционированную ошибку или ошибку 500 для доступа к api, если у вас есть рабочий пример вызова веб-api из веб-приложения, использующего 2.0 и защищенного AD B2C, мы будем очень признательны.
Изменить: Я использую для тестирования следующие образцы: Веб-приложение: WebApp-OpenIDConnect-DotNet core2.0 Web Api: B2C-WebApi core2.0, я изменил значения параметров приложения, чтобы они соответствовали моему каталогу b2c.
Для моего тестового приложения asp.net core 1.1 я использую те же образцы, что и выше, но из основной ветки с тем же значением для appsettings.
Редактировать 2 по умолчанию, в startup.cs у меня есть это:
services.AddAuthentication()
.AddJwtBearer(option => new JwtBearerOptions
{
Authority = string.Format("https://login.microsoftonline.com/tfp/{0}/{1}/v2.0/",
Configuration["Authentication:AzureAd:Tenant"], Configuration["Authentication:AzureAd:Policy"]),
Audience = Configuration["Authentication:AzureAd:ClientId"],
Events = new JwtBearerEvents
{
OnAuthenticationFailed = AuthenticationFailed
}
});
что дает мне следующую ошибку:
Microsoft.AspNetCore.Hosting.Internal.WebHost: Информация: запрос запуска HTTP / 1.1 GET http://localhost:44352/api/values/5
Microsoft.AspNetCore.Server.Kestrel: ошибка: идентификатор подключения «0HL89JHF4VBLM», идентификатор запроса «0HL89JHF4VBLM: 00000001»: приложение сгенерировало необработанное исключение. System.InvalidOperationException: не была указана схема проверки подлинности, и схема DefaultChallengeScheme не найдена.
если изменены services.AddAuthentication как то
services.AddAuthentication(sharedOption =>
{
sharedOption.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
ошибка сейчас
Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler: информация: не удалось проверить токен xxx. Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException: IDX10500: ошибка проверки подписи. Ключи безопасности для проверки подписи предоставлены не были. на System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature (String знак, TokenValidationParameters validationParameters) в System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken (String знак, TokenValidationParameters validationParameters, SecurityToken & validatedToken) в Microsoft.AspNetCore.Authentication.JwtBearer. JwtBearerHandler.d__6.MoveNext ()