Identity Server 3 Authentication/Authorization,具有 ASP.NET CORE 1.0

Identity Server 3 Authentication/Authorization, with ASP.NET CORE 1.0

我目前正在开发一个 RESTful 项目,它建立在 ASP.NET Core 1.0 之上,连接到 Identity Server 3。我在 ConfigureServices 方法中为所有控制器设置了一个全局 [Authorize] 过滤器在 Startup.cs.

我现在尝试从 CORE 1.0 项目的 Startup.cs 中针对我的 Identity Server 3 的 AJAX 请求验证我的承载令牌,从而授权我的控制器资源。

与(经典)ASP.NET 4.5 相比,ASP.NET CORE 1.0 似乎发生了很大变化。

你有什么想法可以实现吗?如何在 ASP.NET Core 1.0 中验证我的令牌?

非常感谢!

更新

在 Asp.net 4.5 中我可以使用 app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions(){...}) 但这在ASP.NET 核心 1.0.

相反,我尝试使用以下内容:

var connectOptions = new OpenIdConnectOptions
            {      
                Authority = Configuration["IdentityServerSettings:CoreUrl"],
                ClientId = Configuration["IdentityServerSettings:ClientId"],
                ClientSecret = Configuration["IdentityServerSettings:ClientSecret"],
                PostLogoutRedirectUri = Configuration["IdentityServerSettings:PostLogoutRedirectUri"],
                ResponseType = OpenIdConnectResponseType.Code
            };
            app.UseOpenIdConnectAuthentication(connectOptions);

不幸的是,我得到的只是 HTTP 302...

我想你的要求是你想使用 Bearer Token Authentication 中间件。

您要找的包裹是"Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0"

可以使用IdentityServer4.AccessTokenValidation来解决这个问题:)

app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions()
            {
                ScopeName = Configuration["IdentityServerSettings:ApiScopes"],
                Authority = Configuration["IdentityServerSettings:CoreUrl"]
            });