Okta: не удалось получить конфигурацию из: ‘System.Строка’

#c# #asp.net-core #jwt #okta

#c# #asp.net-core #jwt #okta

Вопрос:

Я создаю приложение, используя Okta для аутентификации, но запросы API всегда возвращают ошибку 500. Я использую @okta/okta-react для получения токена доступа, но при отправке заголовка авторизации ( Bearer {accessToken} ) сервер не может его обработать.

Сервер отвечает следующей ошибкой на каждый запрос.

 Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[3]
      Exception occurred while processing message.
System.InvalidOperationException: IDX20803: Unable to obtain configuration from: 'System.String'.
 ---> System.IO.IOException: IDX20807: Unable to retrieve document from: 'System.String'. HttpResponseMessage: 'System.Net.Http.HttpResponseMessage', HttpResponseMessage.Content: 'System.String'.
   at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel)
   at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.GetAsync(String address, IDocumentRetriever retriever, CancellationToken cancel)
   at Microsoft.IdentityModel.Protocols.ConfigurationManager`1.GetConfigurationAsync(CancellationToken cancel)
   --- End of inner exception stack trace ---
   at Microsoft.IdentityModel.Protocols.ConfigurationManager`1.GetConfigurationAsync(CancellationToken cancel)
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
  

Я использую Okta.Пакет AspNetCore для конфигурации. Мой класс запуска имеет

 public void ConfigureServices(IServiceCollection services)
{

services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = OktaDefaults.ApiAuthenticationScheme;
        options.DefaultChallengeScheme = OktaDefaults.ApiAuthenticationScheme;
        options.DefaultSignInScheme = OktaDefaults.ApiAuthenticationScheme;
    })
    .AddOktaWebApi(new OktaWebApiOptions()
    {
        OktaDomain = Configuration["Okta:Authority"],
    });

services.AddAuthorization();
services.AddControllersWithViews();

...
}
  

и

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRouting();
    app.UseAuthentication();
    app.UseAuthorization();
    app.UseEndpoints(endpoints => ...
}
  

Я много искал ответы, но большинство из них похожи, но не по той же проблеме. Буду признателен за любую помощь!

Комментарии:

1. В вашем Configure методе отсутствует вызов app.UseIdentityServer() .

2. Проблема в том, что я следовал developer.okta.com/docs/guides/protect-your-api/aspnetcore3 /… и нигде там даже не упоминается IdentityServer. Кроме того, необходимо установить дополнительный пакет, который также не был упомянут.

3. Следует быть осторожным с тем, что при использовании промежуточного программного обеспечения важен порядок их объявления. У меня была эта ошибка, потому что я не использовал app.UseAuthentication(); first, а затем app.UseAuthorization(); second. Если они расположены в неправильном порядке, вы получите сообщение об ошибке: `System. Исключение InvalidOperationException: IDX20803: не удалось получить конфигурацию из: https://org.oktapreview.com/oauth2/aus17ct73zmZrZjbh0h8/.well-known/openid-configuration'.