我已经将我的 web api 配置为使用 windows 身份验证。我的目标本质上是根据用户 Windows 帐户限制控制器中的某些操作。有些将能够执行读取操作,而其他将能够执行将写入基础数据库的操作。我找到了大量关于如何设置基于声明的授权的文档,这是我认为我需要走的路线。我还没有发现如何使用 windows auth 进行设置。我想我错过了中间步骤,例如将 Windows 身份验证注册为身份提供者?
启动文件
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(`???????????????????????`));
});
}
Run Code Online (Sandbox Code Playgroud)
控制器
[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
}
}
Run Code Online (Sandbox Code Playgroud)
我想问这个问题的另一种方法是如何使用 Windows 身份验证配置或访问声明/角色等。
在我的 ASP Net Core 应用程序中,我需要仅为特定控制器应用自定义中间件。
我找到了这个例子
app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), appBuilder =>
{
app.UseMiddleware();
});
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
如何检查请求路径是否包含特定路径而不是开头?