Это можно сделать с помощью Оуина.В файле Startup.cs вы можете добавить что-то вроде этого:
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
var oAuthOptions = new OAuthBearerAuthenticationOptions
{
// your jwt settings
};
app.UseOAuthBearerAuthentication(oAuthOptions);
app.Use(typeof(BasicAuthenticationMiddleWare)); // basic auth middleware
}
}
К несчастью, Овин по умолчанию не поддерживает базовую аутентификацию, для этого вам нужно написать собственное промежуточное программное обеспечение:
public class BasicAuthenticationMiddleWare : OwinMiddleware
{
public BasicAuthenticationMiddleWare(OwinMiddleware next) : base(next) { }
public override Task Invoke(IOwinContext context)
{
throw new NotImplementedException();
}
}
Информацию о базовом промежуточном программном обеспечении вы найдете здесь: https://lbadri.wordpress.com/2013/07/13/basic-authentication-with-asp-net-web-api-using-owin-middleware/
О том, как настроить jwt для owin, вы найдете более подробную информацию в Google.Без подробностей о вашем поставщике jwt я не могу помочь вам с настройкой.
Когда вы настраиваете jwt и базовую аутентификацию, вы просто добавляете атрибут [Authorize] к своим контроллерам или методам:
[Authorize]
public class AccountController : ApiController
{
}
Owin будетпроделайте остальную работу, чтобы определить, какой метод auth использовался для авторизации запроса.
Если вы не используете jwt в качестве токенов-носителей, используйте UseOAuthAuthorizationServer вместо UseOAuthBearerAuthentication.
Также с помощью Owin вы можете добавитьдругие поставщики, такие как Google, Microsoft, Facebook и другие.