C# 在ASP.NETWebAPI 2.0中使用OAuth令牌
我已经使用ASP.NETWebAPI2.0创建了一个全新的Web服务,并尝试使用基于OAuthJWT令牌的授权。我已经用OWIN完成了所有的基本连接,但是当我使用[Authorize]属性时,它失败了,即使是对于一个有效的令牌。你能帮忙吗 编辑:我缩小了问题的范围。似乎密钥是RS256,而SymmetriceIsuerSecurityKeyProvider无法处理该问题。。。或者我向密钥提供者传递了错误的信息。有没有办法解决这个问题? 这是我的startup.cs的代码C# 在ASP.NETWebAPI 2.0中使用OAuth令牌,c#,asp.net-web-api,jwt,owin,C#,Asp.net Web Api,Jwt,Owin,我已经使用ASP.NETWebAPI2.0创建了一个全新的Web服务,并尝试使用基于OAuthJWT令牌的授权。我已经用OWIN完成了所有的基本连接,但是当我使用[Authorize]属性时,它失败了,即使是对于一个有效的令牌。你能帮忙吗 编辑:我缩小了问题的范围。似乎密钥是RS256,而SymmetriceIsuerSecurityKeyProvider无法处理该问题。。。或者我向密钥提供者传递了错误的信息。有没有办法解决这个问题? 这是我的startup.cs的代码 using System
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);
}
}
}
你所说的
失败是什么意思?@ChetanRanpariya如果我设置了Authorize属性,它会以“UnAuthorized”的形式失败。。。如果我不知道上下文中的用户没有声明。。。