gpt4 book ai didi

c# - Winforms Web 浏览器控件上的单点登录

转载 作者:行者123 更新时间:2023-11-30 18:03:09 24 4
gpt4 key购买 nike

我有一个托管网络浏览器控件的 Winforms 应用程序。在此控件中,您还可以导航到预先确定的外部网站。

我需要实现单点登录,这样用户就不需要在每个已知的外部网站上进行身份验证。我已经有了一些想法,但很高兴听到您的所有意见。

执行此操作的最佳方法是什么?

事实上,是否已经有一些东西可以用于此? (编辑:浏览器如何记住登录名/密码)?

干杯

最佳答案

一般情况下,站点负责实现单点登录,然后客户端会自动响应站点。由于 Web 浏览器控件使用 IE,因此它继承了与 Web 浏览器相同的功能。例如,如果网站使用 Windows Authentication然后控件将根据来自站点的质询进行身份验证,而无需用户干预。同样,如果站点使用 SAML 2.0,控件将执行必要的重定向。 .

由于这些是外部网站,我不得不假设 Windows 身份验证无法正常工作,因为服务器和客户端位于不同的域中。因此,类似于 SAML 的东西听起来像是最安全的选择。

似乎实现 SAML 对您来说是个问题,您需要手动完成并提交加载到控件中的 Web 表单。这可以通过访问 DOM 来实现,但它很快就会变得难以维护。

Web 浏览器控件提供一个 document property给你一个HtmlDocument允许您 find elements 的对象和 execute JavaScript在页面中。您需要使用这些机制来自动执行身份验证。这些步骤可能如下所示:

  1. 捕获 URL 或一些 cookie,通过检查 Web 浏览器控件属性让您知道是否需要身份验证。你可能想看看 OnNavigate() .
  2. 访问文档并完成表单值。
  3. 调用 JavaScript 提交函数来提交表单,或注入(inject)一些 JavaScript 来执行此操作。我发现在很多情况下,将 JavaScript 插入页面比编写更复杂的 C# 代码更容易。在常规浏览器中制作原型(prototype)更容易。

关于c# - Winforms Web 浏览器控件上的单点登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7484930/

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