Добавить аутентификацию токена для контроллера webApi в существующее приложение asp.net MVC 5 - PullRequest
0 голосов
/ 02 июля 2018

В настоящее время у меня есть контроллер Web API, добавленный к существующему проекту MVC 5 (без использования ядра .net), и я смог успешно создать и получить данные с настроенного мной контроллера. Целью API является передача данных между ним и мобильным приложением, использующим тот же источник данных, что и проект MVC (я также буду вызывать существующие методы в проекте из API, поэтому я бы предпочел, чтобы API существовал в MVC проект). Сейчас я ищу способ добавить аутентификацию токенов в API, так как я хочу, чтобы только зарегистрированные пользователи в мобильном приложении имели доступ к API. Как мне этого добиться?

1 Ответ

0 голосов
/ 06 июля 2018

Самое простое решение должно заключаться в использовании промежуточного программного обеспечения для проверки токенов из пакета IdentityServer 3.
Просто добавьте пакет nuget и настройте свое приложение, следуя документу:

public class Startup
{
  public void Configuration(IAppBuilder app)
  {
    // turn off any default mapping on the JWT handler
    JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();

    app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
        {
            Authority = "https://localhost:44333/core",
            RequiredScopes = new[] { "api1" }
        });

    app.UseWebApi(WebApiConfig.Register());
  }
}

Можно установить
app.UseIdentityServerBearerTokenAuthentication() только
до
app.UseCookieAuthentication() и app.UseOpenIdConnectAuthentication()
и вызвать
GlobalConfiguration.Configure(WebApiConfig.Register) в Global.asax
Такой подход позволяет объединить токен и аутентификацию на основе файлов cookie в одном приложении MVC.
Единственная проблема на сегодняшний день заключается в том, что инструменты семейства IdentityServer 3 заморожены и поддерживают только System.IdentityModel 4 и OWIN 3, поэтому

обновление: Предпочтительным решением для ASP.NET 4.6+ становится IdentityServer3.Contrib.AccessTokenValidation - вилка, реорганизованная в соответствии с последними изменениями в структуре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...