Служба авторизации OAuth в ASP.NET Core

В 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 может быть настроена через Middleware, но это касается части авторизации, где я выдаю заявки из своего API.

2 ответа

Решение

Не тратьте свое время на поиски 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 Framework и.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/.

Удачи!

Для тех, кто все еще ищет оригинальный сервер авторизации 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

Другие вопросы по тегам