gpt4 book ai didi

c# - 避免 dotnetopenauth url 中的 "must contain period"限制

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:42 25 4
gpt4 key购买 nike

背景(从迄今为止我问过的关于 DNOA 的大量问题中可能已经很明显):我正在开发一个在我雇主的内部网上运行的 Web 应用程序门户。然而,由于这是一个内部网,所有不同的依赖方(和提供者)都有这样的 url:http://servername/path;特别是缺少 TLD。

DotNetOpenAuth (UntrustedWebRequestHandler.IsUriAllowable(Uri uri)) 中的这段代码执行以下检查:

if (!uri.Host.Contains(".")) {
return failsUnlessWhitelisted("it does not contain a period in the host name.");
}

很明显,因为我所有的 RP 都只是没有 TLD 的服务器名称,所以它们都无法通过此检查。现在,我意识到我可以将它们全部添加到 web.config 白名单中(我已经尝试了几次并且它按预期工作),但是看到新服务器将被动态添加我不认为这是理想的解决方案。

所以我的问题是:我应该尝试动态修改 web.config 吗? (我对此所做的初步研究表明这会很痛苦)或者,有什么方法可以编程设置白名单吗?

最佳答案

不幸的是,没有编程方式来修改主机白名单。

如果您处于受信任的环境中,您可以绕过 UntrustedWebRequestHandler 类并使用不包括主机名检查(或检查它是否与您需要的任何策略匹配)的 Web 请求处理程序.如果您信任所有您将要求 DotNetOpenAuth 连接的服务器。

var rp = new OpenIdRelyingParty();
rp.Channel.WebRequestHandler = new StandardWebRequestHandler();

var op = new OpenIdProvider();
op.Channel.WebRequestHandler = new StandardWebRequestHandler();

如果你想应用一些更谨慎的策略(也许有一些集中的白名单主机列表),你可以自己实现IDirectWebRequestHandler,你可以使用the existing UntrustedWebRequestHandler class for inspiration if necessary .然后当然将以上属性设置为您自己的实现。

关于c# - 避免 dotnetopenauth url 中的 "must contain period"限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13535398/

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