Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 只有在协商失败时,如何从协商方法退回到基本方法_Http_Authentication_Browser_Basic Authentication_Negotiate - Fatal编程技术网

Http 只有在协商失败时,如何从协商方法退回到基本方法

Http 只有在协商失败时,如何从协商方法退回到基本方法,http,authentication,browser,basic-authentication,negotiate,Http,Authentication,Browser,Basic Authentication,Negotiate,我有一个Web应用程序,它还可以执行kerberos和基本身份验证。我不知道客户能做什么。因此,这两种身份验证机制都在401应答中发送 回复标题将包含: WWW-Authenticate: Negotiate WWW-Authenticate: Basic realm="MyREALM" 但是,我希望客户机只有在协商失败时才返回到基本身份验证 我希望流程应该是这样的 客户端请求 服务器响应WWW身份验证:协商 客户端使用重新请求(使用错误的身份验证数据或使用指示无法继续的标志) 服务器再次使用

我有一个Web应用程序,它还可以执行kerberos和基本身份验证。我不知道客户能做什么。因此,这两种身份验证机制都在401应答中发送

回复标题将包含:

WWW-Authenticate: Negotiate
WWW-Authenticate: Basic realm="MyREALM"
但是,我希望客户机只有在协商失败时才返回到基本身份验证

我希望流程应该是这样的

  • 客户端请求
  • 服务器响应WWW身份验证:协商
  • 客户端使用重新请求(使用错误的身份验证数据或使用指示无法继续的标志)
  • 服务器再次使用WWW-Authenticate:Basic realm=“MYREALM”进行响应
  • 客户端进行基本身份验证

  • 我该怎么做?为此,我修改了服务器代码。但是不在任何域中的浏览器(它应该进行基本身份验证)在步骤2之后不会响应。

    您的浏览器是什么?浏览器必须使用提供的最强身份验证的具体要求。我想不起如果浏览器无法获取凭据,该怎么办。

    是的,您使用的浏览器和服务器是什么?浏览器必须知道在收到带有WWW Authenticate:Negotiate的401后附加SPNEGO票据。如果浏览器不知道如何附加所述SPNEGO票证,它将通过显示服务返回的401页来停止握手。我通过控制器重定向所有401响应,并在用户会话中跟踪它们已通过WWW-Authenticate:Negotiate发送到401的事实,从而实现了登录时的回退。在这种情况下,我重定向到登录页面,否则我只显示框标准401页面。