ASP.NET Core中的OAuth授权服务

在Web API 2中,您曾经能够通过通过如下中间件设置OAuth授权服务器来创建端点来颁发令牌:

//Set up our auth server options.
var OAuthServerOptions = new OAuthAuthorizationServerOptions()
            {
                AllowInsecureHttp = true,
                TokenEndpointPath = new PathString("/token"),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
                Provider = new SimpleAuthorizationServerProvider()
            };

 // Sets up the token issue endpoint using the options above
 app.UseOAuthAuthorizationServer(OAuthServerOptions);

也许我错过了它,但我想弄清楚如何在ASP.NET Core中做到这一点。 我查看了源代码(https://github.com/aspnet/Security),但我没有看到任何类似的东西。 有没有新的方法来完成这一点? 我是否需要创建一个控制器并自己做?

我看到如何通过中间件设置OAuth身份验证,但是这涉及我从API发出声明的授权部分。


不要浪费时间在ASP.NET Core中寻找OAuthAuthorizationServerMiddleware备选方案,ASP.NET团队只是简单地决定不移植它:https://github.com/aspnet/Security/issues/83

我建议看看AspNet.Security.OpenIdConnect.Server ,它是与Katana 3一起提供的OAuth2授权服务器中间件的高级分支:有OWIN / Katana 3版本和支持完整版本的ASP.NET Core版本。 NET框架和.NET核心。

https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server

ASP.NET Core 1.x:

app.UseOpenIdConnectServer(options =>
{
    options.AllowInsecureHttp = true;
    options.TokenEndpointPath = new PathString("/token");
    options.AccessTokenLifetime = TimeSpan.FromDays(1);
    options.TokenEndpointPath = "/token";
    options.Provider = new SimpleAuthorizationServerProvider();
});

ASP.NET Core 2.x:

services.AddAuthentication().AddOpenIdConnectServer(options =>
{
    options.AllowInsecureHttp = true;
    options.TokenEndpointPath = new PathString("/token");
    options.AccessTokenLifetime = TimeSpan.FromDays(1);
    options.TokenEndpointPath = "/token";
    options.Provider = new SimpleAuthorizationServerProvider();
});

要了解更多关于这个项目,我建议阅读http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-introduction/。

祝你好运!


对于任何仍在寻找ASP.NET 5中的原始OAuth授权服务器的人,我已将代码和原始示例移植到此处:https://github.com/XacronDevelopment/oauth-aspnet

该端口包含向后兼容性,以允许ASP.NET 4.x资源服务器读取由授权服务器创建的访问令牌。

nuget包在这里:https://www.nuget.org/packages/OAuth.AspNet.AuthServer https://www.nuget.org/packages/OAuth.AspNet.Tokens https://www.nuget.org/包/ OAuth.Owin.Tokens

链接地址: http://www.djcxy.com/p/3805.html

上一篇: OAuth Authorization Service in ASP.NET Core

下一篇: RESTful Authentication via Spring