Я пытаюсь создать службу идентификации с помощью IdentityServer4.Служба размещается в OWIN (.Net Fx 4.7.x).Вот что я пробовал до сих пор:
Попытка # 1: Используйте примеры из документации : Однако все примеры основаны на ядре .Net.Репликация кодов, таких как app.UseIdentityServer();
, не работает просто потому, что в этом примере app
имеет тип IApplicationBuilder
, тогда как в автономном приложении OWIN у нас есть IAppBuilder
.
// Startup.cs
public void Configuration(IAppBuilder app)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Configure Unity IOC
app.UseIdentityServer(); //<--doesn't compile
app.UseWebApi(config);
}
Попытка № 2: зарегистрировать промежуточное ПО IdentityServer вручную: Я попытался зарегистрировать необходимое промежуточное ПО вручную, просмотрев источники.Это выглядит примерно так:
//Startup.cs
public void Configuration(IAppBuilder app)
{
...
// Configure Unity IOC
app.Use<IdentityServerMiddleware>(
config.DependencyResolver.GetService(typeof(ILogger<IdentityServerMiddleware>)));
app.UseWebApi(config);
}
Это тоже не работает, так как метод Main
выдает следующую ошибку при запуске WebApp с WebApp.Start<Startup>(baseAddress);
Без преобразованиядоступно между System.Web.Http.Owin.HttpMessageHandlerAdapter и Microsoft.AspNetCore.Http.RequestDelegate.Имя параметра: подпись
Как я могу правильно настроить это?Я знаю, что я могу использовать IdentityServer3 в этом случае, но я заинтересован в использовании IdentityServer4, так как IdentityServer3 больше не поддерживается.