Windows 身份验证在 Flex 中不起作用
Posted
技术标签:
【中文标题】Windows 身份验证在 Flex 中不起作用【英文标题】:Windows Authentication is not working in Flex 【发布时间】:2011-02-02 23:02:00 【问题描述】:我们有一种情况,即 Intranet 中的 Web 应用程序需要 Windows 身份验证。通过这种方式,公司的员工可以登录到他们的桌面并自动访问 Web 应用程序,并且无需登录即可自动识别,因为 Windowns 身份验证会处理这些问题。
问题是我们在 Web 应用程序中添加了一个 Flex 模块。 Web 应用程序正常运行并验证用户,然后可以导航到我们拥有 Flex 应用程序的页面。加载很好。问题是 Flex 应用程序还需要与同一台服务器就该用户进行通信,但这种通信不起作用并且提示用户输入密码。即使输入了正确的用户/密码,它也会失败,并且 Flex 应用程序无法与需要 Windows 身份验证的服务器通信。
我们的期望是,因为包含 flex 应用程序的 IE 浏览器已经过身份验证,来自 Flex 应用程序的所有通信也将携带必要的信息,使其无需身份验证即可访问服务器。不知道为什么这不起作用。任何帮助都非常感谢。
【问题讨论】:
【参考方案1】:我过去处理此问题的方式是创建一个程序集,该程序集将进入您的 Intranet 的 bin 文件夹,将登录用户的信息传递回 Flex 应用程序。由于他们已经登录到域,因此无需重新验证。
然后,您可以使用 FluorineFX (documentation) 调用该程序集,让 Flex 与 .NET 通信。 (为了它的价值,我也使用Mate framework。)你的程序集被调用,登录用户的信息被传回给Flex。
通常我会在启动应用程序的其余部分之前进行此调用并验证是否有登录用户。这样万一有人试图抓取 swf 并在域外使用它,它将无法正常工作。
我希望这会有所帮助!
【讨论】:
我了解您的建议以及如何让 Flex 知道用户是谁。我的问题是 Flex 应用程序仍然需要调用服务器以获取其他数据。服务器需要身份验证,而来自 Flex 的 HTTP 调用没有进行身份验证所需的数据并且失败。这是我的主要问题。是否有一种选择是让对该服务器的所有调用都通过 FlourineFX 而不是直接来自 Flex? FlourineFX 和 WebORB.net 是一回事,FlourineFX 是一个开源版本,可以满足您的需求。在你对别人投反对票之前,你可能真的想考虑一下…… @Saviz,我过去就是这样做的。任何进出我的 Flex 应用程序的数据都会通过 FluorineFX 并消耗一些程序集。【参考方案2】:使用 WebORB,如果您同时使用 .Net 和 Flex 可以为您节省大量时间和麻烦,让 WebORB 将这两个部分绑定在一起。它通过身份验证为您处理 Windows 路径。他们的社区版是免费的,应该可以满足您的需求。
【讨论】:
杰森感谢您的评论。我了解 WebORB 如何告诉我用户是谁。但这如何解决我对需要身份验证的服务器的特定 HTTP 请求的问题。您是否建议 WebORB 充当所有其他调用的代理? 你还懒得看吗? themidnightcoders.com/products/weborb-for-net/features/… 和 themidnightcoders.com/fileadmin/docs/dotnet/v4/guide/… 它允许 Flex 和 .Net 使用相同的身份验证模型,灵活且完全可修改。我们已经在***别的企业网站上非常成功地使用了它。 我没有给你投反对票。我什至没有足够的声誉来做这件事。一定是其他人这样做了。我非常感谢您的时间和您的建议,并将研究您的建议。 很遗憾 WebORB 不是以 Java 为中心的。如果我在服务器上使用 .NET,我只会将 Silverlight 用于客户端。 Flex 与 Java IMO 结合使用更有意义... WebORB 有 .net、java 和 php 版本的服务器端,并允许从 silverlight、flex、flash、javascript 和 world + dog 等几乎所有内容无缝连接到它。此外,floorineFX 在设计上也非常相似,但它是开源的。以上是关于Windows 身份验证在 Flex 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Sharepoint 2013 站点 NTLM 身份验证 javascript doPostBack 在 Safari 和 iPad 中不起作用