我们的应用程序是使用Angular和ASP.NET Core构建的单页应用程序。 我们必须集成另一个Web应用程序,该应用程序将集成到iframe中。用户完成工作后,此应用必须将数据发送回我们的应用。
我需要确保,我可以将来自此应用程序的数据与经过身份验证的用户相关联,以安全的方式在我们的应用程序中开始操作。
这些是我在实现界面时想到的选项:
在我们的应用程序中生成一个唯一的令牌,该令牌了解相关用户并将其传递给另一个应用程序。另一个应用程序将此令牌以及其他数据传输回我们的应用程序,我们可以在后端检查该令牌以了解它是否是合法请求,并将其与用户相关联。
在我们的应用程序中对用户进行身份验证之后存储cookie,因此另一个应用程序可以将数据发布到我们的终结点,并且cookie可以确保调用在经过身份验证的用户的上下文中进行。同样,我们可能必须允许该站点的CORS才能完成这项工作。
使用非基于HTTP的中间件(消息代理)以某种方式连接系统,从而将数据从浏览器中传输出去。
将Bearer令牌从我们的应用程序传输到另一个应用程序,以便另一个应用程序可以对我们的应用程序后端进行经过身份验证的调用。 对于其他应用程序的来源,也必须激活CORS。 但是我有点担心这可能带来的安全隐患。
您会建议哪种方式?还是您会建议实现目标的另一种方式?
非常感谢您提供任何建议!
答案 0 :(得分:1)
2号和4号都将存在潜在的安全问题。应避免在不同应用程序之间传递身份验证上下文,而应分别对每个应用程序进行身份验证。
第3个数字将增加您的体系结构的复杂性,而对您的用例却几乎没有带来任何好处-消息代理在配置和操作上并非无关紧要。我还要问为什么需要通过和iFrame将两个应用程序集成到客户端中,然后才能以某种方式共享消息代理。
对我来说,数字1是您想法中最干净的选择。考虑一下,您将需要以某种方式在客户端中传递此令牌,这可能会打开安全漏洞。考虑一下,如果邪恶的第三者获得此令牌的话,可能发生的负面影响。
在您的位置,我会问为什么要使用iFrame。您的应用是否可以提供UI并通过API与其他应用进行通信?