Аутентификация IdentityServer4 в. NET Framework WebApi Owin UseOpenIdConnectAuthentication - PullRequest
0 голосов
/ 15 апреля 2020

Итак, у меня есть установка IdentityServer4 в отдельном приложении, на которое в коде будет ссылаться WebConfigurationManager.AppSettings["IdentityServer:Authority"].

У меня есть. NET Framework 4.6.1 WebApi-приложение, которое должно попасть в это приложение аутентифицировать запросы. У меня есть приложение WebApi, настроенное как ApiResource "mywebppi" в приложении IdentityServer4.

Чтобы сделать это в. NET Базовом приложении, это просто делается путем добавления следующего кода в Startup.cs:

services.AddAuthentication(Authentication.Bearer)
        .AddJwtBearer(Authentication.Bearer, options =>
        {
            options.Authority = Configuration.GetSection("IdentityServer:Authority").Value;
            options.RequireHttpsMetadata = false;
            options.Audience = "mywebppi";
        });

Но, поскольку это приложение. NET Framework 4.6.1 WebApi, я не могу этого сделать. Я прочитал, что вы можете использовать IdentityServer3.AccessTokenValidation и Owin, чтобы сделать это, но так как пакет nuget IdentityServer3 опирается на IdentityModel 1.9.2 до 2.0.0, а мое приложение WebApi уже использует IdentityModel 3.10.10 и не может быть понижено до сих пор, это не вариант.

Я нашел в другом месте о попытке использовать OwO UseOpenIdConnectAuthentication. Я попробовал это:

[assembly: OwinStartup(typeof(MyWebApi.Startup))]

namespace MyWebApi
{
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {    
                app.SetDefaultSignInAsAuthenticationType("Bearer");
                app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
                {
                    Authority = WebConfigurationManager.AppSettings["IdentityServer:Authority"],
                    Scope = "mywebapi",
                    ResponseType = "id_token",
                    UseTokenLifetime = false,
                    RequireHttpsMetadata = false,
                    AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive,
                    SignInAsAuthenticationType = "Bearer"
                });
            }
        }
}

Но я продолжаю получать «Сообщение»: «Авторизация отклонена для этого запроса».

1 Ответ

0 голосов
/ 28 апреля 2020

Я бы посоветовал вам включить журналы OWIN на веб-интерфейсе API, чтобы увидеть подробности проблемы, здесь - пример настройки журнала для NLog

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...