c# - 具有 Windows 身份验证的防伪令牌在初始页面加载时不起作用
问题描述
用于实现 Antiforgery的ASP.NET Core 文档指出:
使用 Windows 身份验证时,必须以与 cookie 相同的方式保护应用程序端点免受 CSRF 攻击。浏览器将身份验证上下文隐式发送到服务器,因此需要保护端点免受 CSRF 攻击。
使用下面的代码,Startup.cs
初次访问网站时,后续的API请求不会通过。令牌似乎不包含所需的用户信息。只有在刷新页面后,令牌才会起作用。
public void ConfigureServices(IServiceCollection services)
{
services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN");
}
public void Configure(IApplicationBuilder app, IAntiforgery antiforgery)
{
var allowedPaths = new [] { "/", "/index.html" };
var requestPath = context.Request.Path.Value;
app.Use(next => context =>
{
if (allowedPaths.Any(path => string.Equals(requestPath, path, StringComparison.OrdinalIgnoreCase)))
{
return next(context);
}
var tokens = antiforgery.GetAndStoreTokens(context);
var options = new CookieOptions() { HttpOnly = false }
context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken, options);
return next(context);
});
}
这似乎有些合理,因为文档指出:
在通过将用户重定向到视图或 Razor 页面页面对用户进行身份验证后,应刷新令牌。
问题:使用时应该怎么做Windows Authentication
?我找不到合适的例子。
解决方案
推荐阅读
- r - Source on Save 到底是什么意思或做什么?
- email - 将 UAML 字段的多个值解析为列表并在 GOLANG 中对其进行迭代
- java - 在 Android 中使用字节数组和位图时如何避免 OOM
- suitecommerce - 如何在 SCA Aconcagua 的产品详细信息模板中显示产品评论
- javascript - API Jive 获取类别错误:未捕获传递的 URI 与“/places/{uri}”不匹配:/api/core/v3/places/
- python - 使用 Python 2.7 编译 CV Bridge 时发生错误
- c# - asp.net core web api 用括号发布表单数据
- java - 我想运行我的代码,但终端告诉索引超出范围。可能是因为 ArrayList methode 得到 ot smth 这样
- grafana - Grafana - 如何对未下降的指标发出警报?
- css - SASS 的关键帧参数