Я пытаюсь защитить свой основной веб-API-сервер aspnet, заставляя его проходить аутентификацию в Azure B2C с использованием предоставленных пользователем токенов однонаправленного канала JWT.Я следовал некоторому примеру кода, найденному на официальных страницах Microsoft GitHub, но не могу заставить его работать.
В моей политике B2C он настроен на использование формата URL-адреса издателя по умолчанию: https: ////v2.0/
В моем веб-приложении этот URL-адрес указан в качестве параметра Authority в параметрах JWT.
Когда я отправляю HTTP-запрос на мойсервер, код сервера идентификации не удается, поскольку он пытается связаться с B2C для получения конфигурации openid.Он завершается ошибкой со следующей ошибкой ...
HttpRequestException: Response status code does not indicate success: 404 (Not Found).
System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
IOException: IDX20804: Unable to retrieve document from: 'https://innovativelitfoundry.b2clogin.com/0f55bfb6-6af5-4293-8963-29ae099183cc/v2.0/.well-known/openid-configuration'.
Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(string address, CancellationToken cancel)
InvalidOperationException: IDX20803: Unable to obtain configuration from: 'https://innovativelitfoundry.b2clogin.com/0f55bfb6-6af5-4293-8963-29ae099183cc/v2.0/.well-known/openid-configuration'.
Microsoft.IdentityModel.Protocols.ConfigurationManager<T>.GetConfigurationAsync(CancellationToken cancel)
Действительно, этот URL-адрес не будет работать, поскольку, по-видимому, он не включает имя политики из используемого маркера в строку запроса.Таким образом, этот URL действительно не работает.
Я не уверен, как заставить код предоставлять это имя политики в строке запроса?Или он должен делать это автоматически?
Вот код в моем приложении ASPI Core Web API, где я настраиваю параметры аутентификации ...
public void ConfigureServices(IServiceCollection services)
{
IdentityModelEventSource.ShowPII = true;
services
.AddAuthentication(ConfigureAuthentication)
.AddJwtBearer(ConfigureJwt);
services
.AddCors();
services
.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services
.AddSingleton(Configuration);
}
private void ConfigureAuthentication(AuthenticationOptions options)
{
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}
private void ConfigureJwt(JwtBearerOptions options)
{
var tenant = Configuration["AzureAd:TenantId"];
options.Audience = Configuration["AzureAd:ApplicationId"];
options.Authority = $"https://innovativelitfoundry.b2clogin.com/{tenant}/v2.0/";
}
Кто-нибудь, возможно, знает, чтоЯ могу делать неправильно здесь?Как я могу заставить мое приложение aspnet core web api корректно развернуть этот документ конфигурации openid?