C# 以编程方式登录网站并将用户重定向到登录页面?

C# 以编程方式登录网站并将用户重定向到登录页面?,c#,asp.net,authentication,post,screen-scraping,C#,Asp.net,Authentication,Post,Screen Scraping,现在,我让我公司的所有员工使用公司id、用户名和密码登录到外部网站。我们正在尝试将其集成到一个内部网门户中,该门户应提供对该网站的无缝访问,而无需用户输入这些凭据 有没有任何方法可以通过编程(.NET C#)来实现这一点?与截屏非常相似,我可以模拟适当的POST操作,然后将用户重定向到登录页面吗 感谢您的帮助 谢谢 您当然可以发布到外部网站,当您将用户重定向到该网站时,会出现棘手的问题,因为我认为会有cookies限制 您可能可以使用Javascript来使用正确的凭证将客户端浏览器直接发布到第

现在,我让我公司的所有员工使用公司id、用户名和密码登录到外部网站。我们正在尝试将其集成到一个内部网门户中,该门户应提供对该网站的无缝访问,而无需用户输入这些凭据

有没有任何方法可以通过编程(.NET C#)来实现这一点?与截屏非常相似,我可以模拟适当的POST操作,然后将用户重定向到登录页面吗

感谢您的帮助

谢谢



您当然可以发布到外部网站,当您将用户重定向到该网站时,会出现棘手的问题,因为我认为会有cookies限制

您可能可以使用Javascript来使用正确的凭证将客户端浏览器直接发布到第三方,查看jQuery的post命令

假设外部网站以某种方式维护与cookie的会话,问题是,您的公司网站不能设置cookie,除非来自自己的域,第三方网站不能读取cookie,除非来自自己的域,因此,您无法将cookie传输或传递给用户。

您可以在页面中创建一个
,以相同的
操作=
属性镜像外部站点的登录表单,然后使用Javascript填写并提交


请注意,这要求您将用户密码发送到浏览器,这绝不是一个好主意。

此技术的名称为
单点登录。没有一种方法可以做到这一点,但新兴的标准称为
SAML
。这需要双方(发起人和目标网站)的参与,因此这可能超出了您当前的权限

就像这里提到的其他两个答案一样,您可以将格式化的请求直接发布到登录脚本的操作中,但根据经验,我可以告诉您,该解决方案将是脆弱的,也就是说,一旦目标网站做出任何更改,它就会崩溃


您最好联系目标网站的管理员,询问他们是否有
SSO(单点登录)
解决方案。

我确实就SSO与管理员联系过,但答案是没有。因此,我必须寻找其他方法来“模拟”SSO。谢谢你的回复。我将尝试使用格式化请求的解决方案,看看它是如何运行的。有些事情告诉我这不是一个解决办法:)嗯……嗯,那是一种痛苦。如果你被锁定在这种解决方案中,我认为你能做的最好的事情就是在你的登录和他们的代码之间加上一层抽象。。。最有可能改变的事情如下:登录HTML输入的URL名称作为用户名,登录HTML输入的名称作为密码。如果您将这三项都设置为可配置的,那么当他们改变它们时,您将能够快速响应。我也会与网站沟通,让他们知道你正在这么做……充其量,当他们计划进行这些更改时,他们可能会给你一个提示。我尝试了javascript路线,但它会将我带到登录URL。我错过什么了吗?还是事实上它是HTTPS?document.onload=init();函数init(){var aForm=document.getElementById(“testForm”);aForm.submit();}@Santosh:将您的请求与使用Fiddler的实际登录进行比较,看看有什么不同。感谢大家的评论。我能够模拟POST请求并完成工作。但我还有一些其他问题,我可能会为此创建一个新帖子:)。再次感谢。