Это можно было спросить / ответить раньше, поэтому извиняюсь, если это так - я просто не могу заставить его работать.
У меня есть очень старое приложение ASP.NET MVC с большим количеством контроллеров Web API 2 в проекте. Проект использует идентичность asp.net. Я дошел до того, что просто не имеет никакого смысла сохранять проект API как часть внешнего интерфейса и нужно его разделить. Я могу разделить его на другой проект Web API 2, и он будет работать, но я хочу, чтобы он работал на ядре .net, чтобы начать идти в ногу со временем (и многими другими причинами).
Проблема: текущий проект использует идентификацию asp.net, и у меня есть ключ машины в конфигурации. Перемещение этого ключа машины не работает в ядре .net, поэтому я добавил DataProtection в старый проект, чтобы сохранить машинные ключи в AzureStorage. Теперь это работает в старом приложении, и в моем тестовом проекте .net core web api я также добавил его, но продолжаю получать 401 из .net core api.
Насколько я понимаю, маркер-носитель, сгенерированный в старом проекте, можно использовать в новом проекте, однако я продолжаю получать ответ 401. Когда я использую тот же токен-носитель в проекте mvc web api 2, я получаю ожидаемый ответ, поэтому, должно быть, я что-то не так сделал на стороне ядра .net.
Я настроил основной проект .net следующим образом:
public void ConfigureServices(IServiceCollection services)
{
var storageAccount = CloudStorageAccount.DevelopmentStorageAccount;
var client = storageAccount.CreateCloudBlobClient();
var container = client.GetContainerReference("key-container");
services.AddDbContext<AuthContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<RefereeUser>()
.AddEntityFrameworkStores<AuthContext>()
.AddDefaultTokenProviders();
services.AddDataProtection()
.PersistKeysToAzureBlobStorage(container, "keys.xml");
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false,
ValidateAudience = false,
ValidateLifetime = true,
ValidateIssuerSigningKey = false,
ValidIssuer = "yourdomain.com",
ValidAudience = "yourdomain.com"
};
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Что мне здесь не хватает, чтобы заставить его работать?