21

Я немного смущен тем, почему в последнем шаблоне веб-API ASP.NET не существует отдельного параметра аутентификации учетных записей пользователей.Аутентификация отдельной учетной записи пользователя в шаблоне ASP.NET Core Web API

Возможно ли реализовать отдельные учетные записи пользователей так, как это делает шаблон MVC или это не имеет смысла?

Предположим, что я создаю автономный веб-API, который будет иметь всю мою бизнес-логику и уровень данных, который обращается к базе данных, которая имеет таблицы AspNet Identity. Я планирую звонить на этот API с помощью приложения MVC.

Я знаю, что один из способов сделать это - создать приложение ASP.NET MVC с отдельными учетными записями пользователей и просто построить API прямо в приложении MVC с помощью папки контроллеров/api. Тем не менее, я не хочу этого делать, потому что я хочу, чтобы API был его собственным автономным проектом, который можно размещать на совершенно другом сервере и получить доступ к нескольким приложениям, а не только к приложению MVC.

Может ли кто-нибудь привести меня в правильном направлении, как аутентификация обычно работает в этом сценарии, поскольку нет шаблона?

+3

Вы можете скопировать соответствующие биты, но WebAPI и MVC, по существу, одного API в настоящее время. Разница только в том, что у вас нет представлений и как настроен маршрут по умолчанию. Для WebAPI вам обычно не нужны отдельные учетные записи, поскольку по умолчанию у него нет средств для создания учетных записей (которые встроены в шаблон MVC). Вероятно, вы хотите использовать аутентификацию OAuth или OpenID для WebAPI, а не аутентификацию с помощью имени пользователя и пароля. Поскольку ASP.NET Core больше не предлагает никакого промежуточного программного обеспечения OAuth Server, вам необходимо использовать OpenIddict или IdentServer4 для авторизации – Tseng

+1

Так что индивидуальные учетные записи бессмысленны в шаблоне WebAPI – Tseng

+2

@Tseng спасибо за ответ. Так что я все еще не понимаю следующее: Допустим, мое приложение MVC имеет форму входа. Эта форма входа должна отправлять какой-либо запрос ajax с именем пользователя и паролем в api для прав на аутентификацию и авторизацию? Тогда API отвечает, а cookie или что-то установлено? Я просто хочу убедиться, что я в правильном мышлении и на правильном пути. –

ответ

3

Я думаю, вы можете использовать IdentityServer4, который позволяет внедрять единый вход и контроль доступа для ASP.NET Core Web API, используя такие протоколы, как OpenID Connect и OAuth2. Он предлагает интеграцию с Core Identity ASP.NET и ядром Entity Framework Core.

Вам нужно будет установить на следующий NuGet пакет:

Install-Package IdentityServer4 

и добавьте IdentityServer промежуточное программное обеспечение для HTTP трубопровода:

app.UseIdentityServer(); 

Вы можете найти несколько быстрых образцов начала here или следовать this статья.

+0

Да, и вы также можете использовать OpenIddict, который предположительно еще проще, чем IdentityServer4 и построен на ASOS. Этот вопрос, хотя в основном спрашивает, почему шаблоны Core Identity ASP.NET, такие как AccountController.cs, недоступны для нового проекта ASP.NET Core Web API. Не будучи доступными, вкладчики ASP.NET Core, похоже, говорит, что мы не видим прецедента для Identity в веб-API, который не имеет для меня смысла, если вы встаете на проверку API аутентификации, который поддерживает учетные данные для пароля владельца ресурса. Тип предоставления –

+0

Независимо от того, был ли OpenIddicit или IdentityServer4 или ручной прокат , можно было бы использовать Core Identity для регистрации учетных данных для учетной записи владельца ресурса и последующей поддержки логинов в Core Web API для аутентификации –

7

Индивидуальная проверка подлинности учетных записей пользователей для базового веб-интерфейса ASP.NET доступна в .NET Core 2.0 Preview 1.

К сожалению, .NET Core 2.0 Preview 1 недоступен в версии VS 2017.

Но вы можете установить Visual Studio 2017 Preview (вы можете использовать его бок о бок с VS 2017 года стабильная версия): enter image description here

+0

Итак, эта функция доступна в .NET Core 2.0 Preview 1? –

+0

@BrianOgden, точно, для .NET Core 2.0 Preview 1 – Alexan

+0

Было ли это убрано? Я установил Предварительный просмотр VS 2017, и мой единственный вариант для индивидуальных учетных записей пользователей - «Подключиться к существующему магазину пользователя в облаке» –