Serviço de Autorização OAuth no ASP.NET Core

Na Web API 2, você costumava criar um ponto de extremidade para emitir um token configurando um OAuth Authorization Server por meio do middleware, conforme abaixo:

//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); 

Talvez eu esteja perdendo, mas estou tentando descobrir como fazer isso no ASP.NET Core. Eu olhei através da fonte ( https://github.com/aspnet/Security ), mas eu realmente não vejo nada de análogo. Existe uma nova maneira de conseguir isso? Preciso apenas criar um controlador e fazer isso sozinho?

Vejo como a autenticação OAuth pode ser configurada via middleware, mas isso diz respeito à parte de autorização em que eu emito declarações da minha API.

Não perca tempo procurando uma alternativa OAuthAuthorizationServerMiddleware no ASP.NET Core, a equipe do ASP.NET simplesmente decidiu não portá-la: https://github.com/aspnet/Security/issues/83

Sugiro dar uma olhada no AspNet.Security.OpenIdConnect.Server , uma bifurcação avançada do middleware de servidor de autorização OAuth2 que vem com o Katana 3: há uma versão OWIN / Katana 3 e uma versão ASP.NET Core que oferece suporte a ambas as versões completas. NET e .NET Core.

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(); }); 

Para saber mais sobre este projeto, recomendo ler http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-introduction/ .

Boa sorte!

Para qualquer pessoa que ainda esteja procurando o OAuth Authorization Server original no ASP.NET 5, eu portei o código e a amostra original aqui: https://github.com/XacronDevelopment/oauth-aspnet

A porta inclui compatibilidade com versões anteriores para permitir que os servidores de resources do ASP.NET 4.x leiam os tokens de access criados pelo servidor de autorização.

Os pacotes nuget estão aqui: https://www.nuget.org/packages/OAuth.AspNet.AuthServer https://www.nuget.org/packages/OAuth.AspNet.Tokens https://www.nuget.org/ packages / OAuth.Owin.Tokens