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

回复标题将包含

WWW-Authenticate: Negotiate
WWW-Authenticate: Basic realm="MyREALM"

但是,我希望客户端仅在协商失败时才使用基本身份验证。

我希望流程应该像
  • 客户端请求
  • 服务器以WWW-Authenticate响应:协商
  • 客户端使用
  • 重新请求(具有错误的身份验证数据或带有指示其无法继续执行的某些标志)
  • 服务器再次使用WWW-Authenticate响应:Basic realm =“MYREALM”
  • 客户端执行基本身份验证。

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

    最佳答案

    您的浏览器是什么?特定的RFC chapter 4.6要求浏览器必须使用提供的最强身份验证。我无法记忆起浏览器如果无法获取凭据时应该怎么做。

    关于http - 仅当协商失败时,如何从协商方法回退到基本方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5405295/

    10-12 00:07