如何解决.netframework API owin IdentityServer3.AccessTokenValidation 无法访问 [Authorize] 方法
我的 .netframework API 尝试使用 IdentityServer3.AccessTokenValidation 访问 identityserver4。我正在从 Angular 应用程序调用 API。我可以连接匿名用户,但问题是访问经过身份验证的用户时不起作用
using IdentityServer3.AccessTokenValidation;
using Microsoft.Owin;
using Microsoft.Owin.Cors;
using Owin;
using System.IdentityModel.Tokens;
using System.Web.Http;
using Microsoft.Owin.Security.Authorization.Infrastructure;
[assembly: OwinStartup(typeof(WebAPI_Testing.Startup))]
namespace WebAPI_Testing
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
JwtSecurityTokenHandler.InboundClaimTypeMap.Clear();
app.UseCors(CorsOptions.AllowAll);
app.UseIdentityServerBearerTokenAuthentication(
new IdentityServerBearerTokenAuthenticationOptions
{
Authority = "https://localhost:5000",ValidationMode = ValidationMode.Local,RequiredScopes = new[] { "api1" },ClientId = testApi",});
//configure web api
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional }
);
config.Formatters.Remove(config.Formatters.XmlFormatter);
app.UseWebApi(config);
}
}
}
控制器
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
//var user = User as ClaimsPrincipal;
//var token = user.FindFirst("access_token").Value;
return new string[] { "value1","value2" };
}
//NOT working
[Authorize]
// GET api/values/5
public string Get(int id)
{
return "value";
}
我认为用户没有在这里登录。我正在传递 access_token 但用户为空。在上面的代码中需要添加任何可以使用 [Authorize] 捕获经过身份验证的用户和控制器方法的东西吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。