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

//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 ),但我真的没有看到任何类似的东西。有没有新的方法来实现这一点?我是否只需要创建一个 Controller 并自己完成?

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

最佳答案

编辑 (01/28/2021):作为 3.0 更新的一部分,AspNet.Security.OpenIdConnect.Server 已合并到 OpenIddict 中。要开始使用 OpenIddict,请访问 documentation.openiddict.com

不要浪费时间在 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 Core。
https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server
ASP.NET 核心 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 核心 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 - ASP.NET Core 中的 OAuth 授权服务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29055477/

10-16 17:11
查看更多