Служба авторизации OAuth в ядре ASP.NET
В 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 Authentication может быть настроена через Middleware, но это касается части авторизации, в которой я выдаю претензии из моего API.
Ответы
Ответ 1
Не тратьте время на поиск альтернативы OAuthAuthorizationServerMiddleware
в ASP.NET Core, команда ASP.NET просто решила не переносить ее: https://github.com/aspnet/Security/issues/83
Я предлагаю взглянуть на AspNet.Security.OpenIdConnect.Server, расширенную версию серверного ПО для авторизации сервера OAuth2, которая поставляется вместе с Katana 3: есть версия OWIN/Katana 3 и ASP.NET Core, которая поддерживает как полную платформу .NET, так и .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();
});
Чтобы узнать больше об этом проекте, я бы рекомендовал прочитать http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-introduction/.
Удачи!
Ответ 2
Для тех, кто все еще ищет исходный сервер авторизации OAuth в ASP.NET 5, я портировал код и исходный образец здесь: 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/packages/OAuth.Owin.Tokens