Самое простое решение должно заключаться в использовании промежуточного программного обеспечения для проверки токенов из пакета 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 - вилка, реорганизованная в соответствии с последними изменениями в структуре.