gpt4 book ai didi

.net - WCF WebHttp 混合身份验证(基本和匿名)

转载 作者:可可西里 更新时间:2023-11-01 15:12:34 26 4
gpt4 key购买 nike

所有这些都与 WebHttp 绑定(bind)有关,托管在自定义服务主机中(IIS 目前不是一个选项)。

我已经实现了自定义 UserNamePasswordValidator 和自定义 IAuthorizationPolicy。当我将端点的绑定(bind)配置为使用基本身份验证时,一切都按照我的意愿进行(自定义主体、自定义角色等)。

我也想添加匿名 HTTP 访问的能力,并让我的自定义实现将匿名用户置于某些默认角色等。(如果没有发送 Authenticate header )。

现在发生的情况是,在我的任何自定义代码被命中之前,匿名用户都会收到 401。如果我关闭 HTTP 基本身份验证要求,那么 Authenticate header 将被完全忽略。

如何配置、或注入(inject)一个 Authenticate header,以双向执行此操作(无需创建 2 个单独的端点)?

最佳答案

首先,服务根据 specification 正确响应匿名调用。 .

其次,这是不可能的。当您自托管服务并且有一些 http 绑定(bind)时,WCF 将使用 <a href="http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx" rel="noreferrer noopener nofollow">System.Net.HttpListener</a>能够响应 http 请求的实例(在 System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen 中创建)。这个监听器有一个名为 HandleAuthentication 的方法在调用任何自定义代码之前调用它。它负责发回带有质询 (WWW-Authenticate) 的 401 响应。你对此无能为力。如果有,我想知道。

所以你有以下选择:

  • 两个端点
  • 将您的客户端配置为知道默认凭据
  • 改变你的客户,使他们能够应对挑战

关于.net - WCF WebHttp 混合身份验证(基本和匿名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/209795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com