【发布时间】:2017-01-08 04:39:48
【问题描述】:
我有一个可用的 Asp.NET 核心 WebApi 服务和一个可以从 ASP.NET 核心 MVC 应用程序调用的服务。使用 AutoRest 生成的包装器调用该服务。该服务目前没有安全层,而网站使用 OAuth2 进行保护。
我在服务中添加了以下内容:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);
services.AddMvc();
// NEW Authorisation
services.AddAuthorization(options =>
{
options.AddPolicy("ApiAccess", policy => policy.RequireClaim("email"));
});
}
我的控制器是安全的,所以:
[Authorize(Policy = "ApiAccess")]
public class StatusController : Controller
但是,当我调用 AutoRest 包装器时,我得到一个“未经授权”的异常:
try
{
var service = new StatusAPI(new Uri("http://localhost:17237/"));
ViewData["State"] = service.ApiStatusGet();
}
catch (Exception ex)
{
ViewData["State"] = new[] { new ServiceStatus { Name = "Health API", Message = "Is unreachable " + ex.Message } };
}
我不确定问题是否在于我需要一种方法来传递我对包装器的调用中的声明,或者它是否在我的服务设置中以及它如何检测声明。
【问题讨论】:
-
是否有身份验证中间件或一些自定义代码填充主体中的电子邮件声明?
-
理想情况下,我正在寻找一个展示需要如何配置的示例
-
我没有看到您提供任何类型的包含电子邮件声明的令牌。这是
StatusAPI为您处理的事情吗?
标签: c# oauth-2.0 asp.net-core .net-core asp.net-core-webapi