【发布时间】:2019-04-30 15:46:24
【问题描述】:
我已将我的 Web api 配置为使用 Windows 身份验证。我的目标本质上是根据用户 Windows 帐户限制我的控制器中的某些操作。有些将能够执行读取操作,而另一些将能够执行将写入底层数据库的操作。我找到了大量关于如何设置基于声明的授权的文档,这是我认为我需要走的路线。我还没有找到如何使用 windows auth 进行设置。我想我错过了一个中间步骤,例如将 Windows 身份验证注册为身份提供者?
startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddAuthorization(options =>
{
options.AddPolicy("readOnly", policy =>
policy.RequireClaim(`???????????????????????`));
options.AddPolicy("write", policy =>
policy.RequireClaim(`???????????????????????`));
});
}
控制器
[Authorize(Policy = "ReadOnly")]
public class MyController : Controller
{
public ActionResult SomeReadOnlyAction()
{
//Return data from database
}
[Authorize(Policy = "Write")]
public ActionResult AWriteAction()
{
//Create/Update/Delete data from database
}
}
我想问这个问题的另一种方法是如何配置或访问声明/角色等...使用 Windows 身份验证。
【问题讨论】:
-
你有电话到
services.AddAuthentication(...)吗? -
不,我没有......
-
你是绝对正确的。我已将其添加并更新了上面的代码。我想我的下一个问题是我如何访问凭据然后围绕它构建一个策略,以便我可以在我的控制器操作上使用特定的授权属性?
标签: c# iis asp.net-core authorization windows-authentication