如何解决IIS Kerberos 缓存
我在 IIS 10 中创建了一个网站,其端点需要 windows-auth。
为此,我使用 Negotiate
配置 windows-auth-provider。
我使用此 c# dotnet-core 代码检查当前使用的 Auth-Type 和值(我定位自己 at this Microsoft page)
if(httpContext == null)
throw new ArgumentNullException(nameof(httpContext));
var authType = httpContext.GetServerVariable("AUTH_TYPE")?.ToUpper();
var authHeader = httpContext.GetServerVariable("HTTP_AUTHORIZATION");
if (authType == null || authHeader == null)
return (authType ?? "unknown",authHeader ?? "unknown");
var lenAuthHeader = authHeader?.Length;
var protocol = authType?.Length == 0 ? "Anonymous" : authType != "NEGOTIATE" ? authType : lenAuthHeader > 1000 ? "Kerberos" : "NTLM";
return (authType,protocol);
第一个请求看起来符合预期,我得到了 Kerberos-auth-value。
但是在第二个请求中 "AUTH_TYPE"
和 "HTTP_AUTHORIZATION"
为空/NULL,但我仍然登录。
我已阅读 here 说明 Kerberos-ticked 已被缓存。
如果我将窗口提供程序更改为仅 Negotiate: Kerberos
,则每个请求都是 Kerberos 请求,
但 IIS 说我必须禁用 Kernal-Mode
。
所以我的问题是:
- 我认为第二个请求由 IIS/Windows-Server 缓存是否正确?
- 如果是,我可以在服务器上检查第二个请求是缓存请求吗(也许我可以检查其他 ServerVariables)?
- 如果是,我可以区分 NTML 和 Kerberos 之间的缓存会话吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。