如何在Negotiate失败时从Negotiate方法回退到Basic

kal*_*yan 7 browser authentication http basic-authentication negotiate

我有一个web应用程序,它也执行kerberos和基本身份验证.我不知道客户端的能力.因此,两个身份验证机制都在401回复中发送.

回复标题将包含,

WWW-Authenticate: Negotiate
WWW-Authenticate: Basic realm="MyREALM"
Run Code Online (Sandbox Code Playgroud)

但是,我希望客户端只有在协商失败时才能回退到基本身份验证.

我希望流程应该像,

  1. 客户请求
  2. 服务器响应WWW-Authenticate:Negotiate
  3. 客户端重新请求(具有错误的身份验证数据或带有一些标志,指示无法继续)
  4. 服务器响应再次使用WWW-Authenticate:Basic realm ="MYREALM"
  5. 客户端执行基本身份验证.

我怎样才能做到这一点?我修改了服务器代码来执行此操作.但是不在任何域中的浏览器(它应该做基本身份验证)在步骤2之后没有响应.

Mic*_*l-O 0

你的浏览器是什么?具体的RFC 第 4.6 章要求浏览器必须使用提供的最强身份验证。我不记得如果浏览器无法获取凭据应该做什么。