web-dev-qa-db-fra.com

OAuth Service d'autorisation dans ASP.NET Core

Dans Web API 2, vous pouviez créer un noeud final pour émettre un jeton en configurant un OAuth Authorization Server via un middleware, comme ci-dessous:

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

Peut-être me manque-t-il, mais j'essaie de comprendre comment faire cela dans ASP.NET Core. J'ai regardé dans la source ( https://github.com/aspnet/Security ) mais je ne vois vraiment rien d'analogue. Y a-t-il une nouvelle façon d'accomplir cela? Dois-je simplement créer un contrôleur et le faire moi-même?

Je vois comment OAuth L’authentification peut être configurée via un middleware, mais ceci concerne la partie autorisation dans laquelle j’émets des revendications à partir de mon API.

56
swannee

Ne perdez pas votre temps à chercher une alternative OAuthAuthorizationServerMiddleware dans ASP.NET Core, l'équipe ASP.NET a simplement décidé de ne pas la porter: https://github.com/aspnet/Security/ issues/8

Je suggère de jeter un coup d'œil sur AspNet.Security.OpenIdConnect.Server , un fork évolué du middleware du serveur d'autorisations OAuth2 fourni avec Katana 3: il existe un OWIN/Katana 3, et une version ASP.NET Core prenant en charge à la fois le framework .NET complet et le .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();
});

Pour en savoir plus sur ce projet, je vous recommande de lire http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-introduction/ =.

Bonne chance!

72
Pinpoint

Pour ceux qui recherchent toujours l'original OAuth Authorization Server dans ASP.NET 5, j'ai porté le code et l'exemple d'origine ici: https://github.com/XacronDevelopment/ oauth-aspnet

Le port inclut une compatibilité ascendante pour permettre aux serveurs de ressources ASP.NET 4.x de lire les jetons d'accès créés par le serveur d'autorisation.

Les paquets de nuget sont ici: https://www.nuget.org/packages/OAuth.AspNet.AuthServerhttps://www.nuget.org/packages/OAuth.AspNet. Jetonshttps://www.nuget.org/packages/OAuth.Owin.Tokens

3
Xacron