Tag: http basic authentication

HttpListener与JWT和Basic auth:如何发送WWW-Authenticate? (自托管)

我有一个在mono / .NET上运行跨平台的自托管REST应用程序。 一个问题是HttpListener管理和阻止WWW-Authenticate头的手动设置。 如果您将自己限制为内置的Basic,NTLM等身份validation,或者不需要身份validation,那么这很好,但如果您想接受任何其他类型的令牌,则会出现问题。 我正在使用带有REST样式接口的JWT令牌,使用Basic [1] auth进行初始身份validation。 在应用程序的另一部分,我正在做类似的事情,但使用自定义令牌和/或Basic auth作为API的另一部分的后备。 问题是: 如何让HttpListener发送“WWW-Authenticate:Basic”质询标题,同时还允许非基本授权令牌通过? 我已经尝试在听众中设置Basic和Anonymous: _listener.AuthenticationSchemes = AuthenticationSchemes.Basic | AuthenticationSchemes.Anonymous; 这导致在任何情况下都不返回WWW-Authenticate头。 我相信这应该允许基本或未经身份validation的连接,并且当我将状态代码设置为401(HttpStatusCode.Unauthorized)时,还应该设置WWW-Authenticate挑战。 但它没有(在mono或.NET上)。 如果我只设置AuthenticationSchemes.Basic,HttpListener会拒绝所有没有Basic样式标记的连接,这对于远程用途并不重要。 明显但蹩脚的解决方法: 目前我只是违反HTTP规范并返回401而没有WWW-Authenticate标头。 这有效,但会降低与第三方工具的兼容性。 我考虑使用完全不同的HttpListener实现,尽管大多数似乎是在原型阶段或自己的大型库的一部分。 我考虑过编写自己的HttpListener,但是在那时将整个应用程序移植到Java开始看起来很有吸引力。 我想找到比完整的平台端口或编写我自己的库更少工作的建议。 想法? [1] – 此处需要基本身份validation,以便与低级脚本和其他一些系统向后兼容。 请假设我了解安全隐患并使用SSL等。

如何将基本身份validation标头添加到WebRequest

我有一个基本的WCF服务,我想用HttpWebRequest测试它。 问题是我使用基本身份validation。 如何使用基本身份validation添加标头? 到目前为止,这是我的代码: var request = (HttpWebRequest)WebRequest.Create(url); 谢谢