2

我想使用其中一种集中式身份验证系统,例如 OpenId、Google 或 Facebook 身份验证系统。但是,我发现他们都使用 HTTP 重定向到对应服务器的注册部分。

我的问题是,对于我的系统,我们希望提供不同的客户端,其中一些是独立的应用程序,因此除非我在客户端中实现迷你浏览器(或类似的东西),否则 HTTP 重定向策略将不起作用。

可以以编程方式进行这种联合身份验证吗?

谢谢,

古斯塔沃。

4

2 回答 2

3

这些系统的信任和安全依赖于浏览器。作为用户,我只有在浏览器告诉我我已连接到我的提供商时才输入我的凭据:通过指示安全连接并显示反网络钓鱼封条。

您可以在您的应用程序或您的网站上向我索要我的凭据,并代表我进行整个身份验证会话,但我为什么要给您呢?您可以在您的应用程序中显示嵌入式浏览器或在您的网站上显示 iframe,但我为什么相信您不会捕获我的凭据?

然后是方便:我的浏览器有一个来自我的提供商的 cookie,所以大多数时候我什至不需要输入凭据。

我认为独立应用程序的最佳方法是与您的应用程序服务器建立会话,然后启动浏览器将用户带到您的 Web 服务器,并使用会话标识符来验证该会话。然后告诉他们身份验证已完成,他们可能会返回应用程序。使用 cookie 或存储的密码,无论如何它都比在应用程序中输入凭据要快。

于 2011-03-01T17:24:49.733 回答
0

根据@aaz 的建议,根据您的应用程序对 Internet 的公开程度,您可以构建一个 HttpListener 并让 return_to URL 指向您的侦听器。不过,不太可能在防火墙后面工作。

于 2011-04-05T06:57:36.090 回答