我正在尝试使用IdentityServer4创建身份服务。该服务由OWIN(.Net Fx 4.7.x)自托管。以下是我到目前为止所尝试的内容。
尝试#1:使用documentation中的示例:但是,所有示例都基于.Net核心。复制app.UseIdentityServer();
等代码不起作用,因为在示例中,app
的类型为IApplicationBuilder
,而在OWIN自托管应用中,我们有IAppBuilder
。< / p>
// 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.Start<Startup>(baseAddress);
System.Web.Http.Owin.HttpMessageHandlerAdapter和Microsoft.AspNetCore.Http.RequestDelegate之间没有可用的转换。 参数名称:签名
如何正确配置?我知道在这种情况下我可以使用IdentityServer3,但我热衷于使用IdentityServer4,因为不再维护IdentityServer3。
答案 0 :(得分:2)
IdentityServer4是 ASP.NET Core 2 的OpenID Connect和OAuth 2.0框架。
身份服务器4仅适用于Asp.Net核心2.0。你无法使用它来创建一个旧的ASP.Net(Owin / KATANA)的身份服务器我建议你切换到ASP.NET Core 2.0。
如评论中所述,您可以返回Identity Server 3但不再受支持,因此如果出现任何问题,可能不会有任何安全更新。因为我不会在新的生产产品中亲自使用它。