#c# #asp.net-web-api #jwt #owin
#c# #asp.net-web-api #jwt #owin
Вопрос:
Я создал совершенно новый веб-сервис, используя ASP.Net Web Api 2.0 и я пытаюсь использовать авторизацию на основе токена OAuth JWT. У меня вся базовая проводка выполнена с помощью OWIN, но когда я использую атрибут [Authorize], он завершается с ошибкой даже для действительного токена. Можете ли вы помочь.
Редактировать: я сузил проблему. Похоже, что ключом является RS256, и SymmetricKeyIssuerSecurityKeyProvider этого не обрабатывает… Либо это, либо я передаю поставщику ключей неверную информацию. Есть идеи, как это исправить?
Вот код моего startup.cs
using System.Configuration;
using System.Web.Http;
using Microsoft.Owin.Security;
using Microsoft.Owin.Security.Jwt;
using Owin;
using Microsoft.AspNet.Identity;
namespace SecuredApi
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureOAuth(app);
var config = ConfigureWebApi();
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
private HttpConfiguration ConfigureWebApi()
{
var config = new HttpConfiguration();
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter("Bearer"));
config.MapHttpAttributeRoutes();
return config;
}
private void ConfigureOAuth(IAppBuilder app)
{
var issuer = ConfigurationManager.AppSettings.Get("Issuer");
var audience = ConfigurationManager.AppSettings.Get("Audience");
var secret = ConfigurationManager.AppSettings.Get("Secret");
// Api controllers with an [Authorize] attribute will be validated with JWT
var jwtBearerAuthenticationOptions = new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AuthenticationType = DefaultAuthenticationTypes.ExternalBearer,
AllowedAudiences = new[] { audience },
IssuerSecurityKeyProviders = new IIssuerSecurityKeyProvider[]
{
new SymmetricKeyIssuerSecurityKeyProvider(issuer, secret)
}
};
app.UseJwtBearerAuthentication(
jwtBearerAuthenticationOptions);
}
}
}
Комментарии:
1. Что вы имеете в виду
it fails
?2. @ChetanRanpariya Если я добавляю атрибут авторизации, он завершается как «несанкционированный» … если я этого не сделаю, пользователь в контексте не имеет претензий…