Как использовать ThinkTecture IdentityServer 3 в Web Api 2
Я много читал о том, как реализовать полную систему аутентификации и авторизации в Asp.Net Web Api 2, которая включает в себя регистрацию, отправку подтверждений по электронной почте, выдачу как токенов доступа, так и токенов обновления и т. Д. Я все-таки успешно все это сделал однако, это выглядит настолько ненужным, чтобы делать это для каждого отдельного проекта.
Я все еще не уверен, но я считаю, что "Thinktecture IdentityServer" - это пакет, который был составлен для обеспечения всего этого, я прав?
Если да, может кто-нибудь сказать мне (очень прямым способом), как я могу создать новый проект Web Api и легко получить все вышеупомянутые функции, используя этот пакет?
2 ответа
Сервер удостоверений Thinktecture v3 представляет собой набор модулей с высокой степенью конфигурации, поэтому для написания кода достаточно настроить его так, как вы хотите. В Thinktecture wiki есть хороший пример "Привет, мир", которого может быть достаточно, чтобы вы начали:
После этого скачайте примеры, найдите тот, который наиболее точно соответствует вашей ситуации, и опирайтесь на него. В частности, вы захотите настроить базу данных для сохранения ваших зарегистрированных пользователей. Связанный проект MembershipReboot обычно используется для доступа к данным вместе с дополнением MembershipReboot.Ef, которое автоматически создает вашу базу данных с помощью EntityFramework.
MembershipReboot - это место, где вы указываете, какие события электронной почты вы хотите использовать.
Вот, чтобы ИСПОЛЬЗОВАТЬ identityServer3, который вы установили отдельно:
(У IdentityServer3 есть несколько готовых примеров настройки сервера, которые могут быть достаточно хорошими для вас или могут потребоваться лишь небольшая настройка)
Nuget Microsoft OpenID Connect (я думаю, что он называется: Microsoft.Owin.Security.OpenIdConnect)
Укажите промежуточное программное обеспечение OpenID Connect (также в Startup.cs) на IdentityServer.
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = "https://myIdsrv3Path/identity",
ClientId = "myapi",
RedirectUri = "https://myIdsrv3Path/", // or
ResponseType = "id_token",
SignInAsAuthenticationType = "Cookies"
});
В IdentityServer3 установите в список принятых клиентов "myapi" с требуемыми требованиями.
Существует еще много объяснений по поводу авторизации, но это отвечает на ваш основной вопрос для обеспечения API.
См. Документацию IdentityServer3: https://identityserver.github.io/Documentation/docsv2/overview/mvcGettingStarted.html
Прокрутите вниз до раздела: Добавление и настройка промежуточного программного обеспечения для проверки подлинности OpenID Connect.