gpt4 book ai didi

REST API 和客户端在同一台服务器上,需要 API 身份验证吗?

转载 作者:行者123 更新时间:2023-12-01 12:45:42 25 4
gpt4 key购买 nike

首先,让我描述一下该应用程序:我们正在开发一种基于网络的软件,它是某种自定义帮助台应用程序。它需要用户登录(我们使用 FOSUserBundle)。登录后,用户将被重定向到仪表板。从仪表板开始,不再需要重新加载页面,前端基于 Angularjs 构建,用户无需重新加载页面即可到达应用程序中的任何位置。您可以谈论单页应用程序。

所以呈现给用户的数据是从 rest api 获取的(我们使用 FOSRestBundle)。这在这一点上非常有效。

存在某种困境。只有我们的员工可以访问此应用程序(目前)。因此,工作人员需要登录才能访问服务台。 angularjs推送到前端的数据是通过api调用的,所以刚登录的用户因为rest,每次请求都需要重新认证。

问题:由于后端运行在 symfony2 上,所以我们在调用 api 时尝试获取当前登录用户的用户对象:

$this->get('security.context')->getToken()->getUser()

返回 anon. 代表匿名,或者

$this->getUser();

仅返回 null

所以当使用 rest api 时,经过身份验证的上下文似乎消失了。但是,当我不休息地直接调用一个 Action 时,我可以获得用户信息。

所以我们需要的是保护我们的 rest api 并在每次 api 调用时获取用户信息。我们不希望第三方人员访问我们的应用程序,只是员工。我不熟悉 OAuth,但用户将被重定向到第三方页面以允许/拒绝访问他的数据?这对我们来说不是一个选择。

根据这些信息,您是否有任何建议或想法如何保护 api 和传输用户数据,以便 getUser 不会返回 null 或 anon。但是实际登录的用户呢?

最佳答案

还有另一种方法可以解决您的问题。

这是通过使用证书。您可以生成证书,然后使用 Http 隧道 (https 显而易见),服务器将要求提供证书(您必须为此配置 Apache,但这不是什么大挑战)。

有了这个,您必须在服务器端添加一个 CertificateManager 以确保证书有效并知道谁在调用该服务(以便能够在每个request),CertificateManager(或者你怎么调用它)可能必须在你的过滤器链(在 java 世界中众所周知)中进行配置,等等

希望对你有帮助,阿卜杜拉扎克

关于REST API 和客户端在同一台服务器上,需要 API 身份验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16216251/

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