Аутентификация веб-API в ASP.NET 5
Я изучаю ASP.NET 5 в течение некоторого времени, и есть кое-что, что я еще не смутил. Чтобы реализовать аутентификацию в Web API 2, я использовал в основном ПО OWIN OAuth Authentication Server Middleware. Он был прост в использовании, я мог настроить только то, что мне было нужно, и не было кучи вещей, которые мне нужно было бы добавить в приложение, не требуя этого.
Теперь, сначала я не нашел это в ASP.NET 5, и я подумал, что нужно подождать, пока появится промежуточное ПО. Но вчера, прочитав о проблемах в репо безопасности, я узнал, что, по-видимому, нет намерения переносить это промежуточное ПО на новую версию фреймворка.
Вместо этого кажется, что людям рекомендуется использовать Identity Server 3. Я взглянул на проект, и хотя это хорошо и имеет много обычаев, я действительно предпочитаю настраивать только тот минимальный, который мне нужен. Кроме того, еще один недостаток заключается в том, что Identity Server 3 нуждается в полной CLR, поэтому, если мне нужно будет использовать его для обеспечения аутентификации в моем приложении, мне нужно будет прекратить использование Core CLR, что для меня является огромным недостатком, поскольку Core CLR - это намного более легкий.
Итак, если я не хочу использовать Identity Server 3 на ASP.NET 5, как я могу реализовать аутентификацию для веб-API, если промежуточное ПО сервера аутентификации OAuth не прошло? Кто-нибудь прошел через это и нашел способ справиться с этим?
Как работать с аутентификацией в веб-интерфейсе ASP.NET 5 без использования Identity Server 3?
Ответы
Ответ 1
В самом деле, в ASP.NET 5 не будет OAuthAuthorizationServerMiddleware
.
Если вы ищете тот же подход на низком уровне, вы должны взглянуть на AspNet.Security.OpenIdConnect.Server
: это расширенная форма для промежуточного программного обеспечения сервера авторизации OAuth2, которое поставляется с Katana 3, но которое нацелено на OpenID Connect, поскольку вы уже разобрался (
Служба авторизации OAuth в ядре ASP.NET).
https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server
OpenID Connect сам основан на OAuth2 и в основном представляет собой надмножество, предлагающее стандартизованные функции аутентификации. Не беспокойтесь: вы можете, конечно, использовать ЛЮБОЙ клиент OAuth2 с ЛЮБЫМ сервером OpenID Connect, включая AspNet.Security.OpenIdConnect.Server.
Не пропустите образец MVC 6: https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server/tree/dev/samples/Mvc
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
Audience = "http://localhost:54540/",
Authority = "http://localhost:54540/"
});
app.UseOpenIdConnectServer(options =>
{
options.Provider = new AuthorizationProvider();
});
Удачи, и не стесняйтесь пингуть меня, если вам нужна помощь.
Ответ 2
Я столкнулся с одной и той же проблемой при попытке использовать промежуточное ПО сервера авторизации OWA OAuth в ASP.NET 5, поэтому решил сам портировать код. Вы можете найти источник в этом репозитории GitHub https://github.com/XacronDevelopment/oauth-aspnet или просто использовать пакеты NuGet OAuth.AspNet.AuthServer и OAuth.AspNet.Tokens. Проверьте исходный код, чтобы узнать, как вещи подключены; образцы в источнике - это те же образцы, созданные Microsoft http://bit.ly/1MOGDEJ, за исключением добавленных примеров ASP.NET.