来自同一服务器的SPA和RESTAPI应该是两个不同的OAuth客户端吗



我已经阅读和搜索了几个小时,但没有明确的答案。

假设我有一个SPA客户端访问RESTAPI,它们由同一个服务提供服务,例如,我通过转到example.com来访问我的SPA,而SPA进行的RESTneneneba API调用指向example.com/api/orders。SPA和RESTneneneba API是否需要是两个独立的OAuth客户端注册?

从概念上讲,我登录了一个应用程序,但我可以看到它们的不同之处。例如,SPA在登录后需要一个重定向_url,并且是"公共客户端",而REST API不需要重定向_url并且可以是"机密客户端"。(我可以看到,如果以后我想向其他消费者开放RESTAPI,和/或让SPA直接调用其他资源提供者,它也会更加灵活(。

我相信我可以只注册一个OAuth客户端,但这是一种反模式还是出于安全原因而不受欢迎?我只想在同一个站点上抛出一个简单的SPA,其中包含一些经过身份验证的RESTAPI,并且需要两个OAuth注册似乎有些过头了。

从概念上讲,前端和后端应该是不同的OAuth2客户端。但是是的,你可以放过一个客户。

从安全角度来看,最好有两个客户端。你可以为每个设置不同的安全约束-要求公共客户端使用PKCE,禁用来自网络外部的机密客户端请求等等。

我会和两个客户一起去即使你现在不需要任何特别的东西,也可能会在以后发生,而且创建一个额外的客户端也不需要太多工作。

还有另一种选择——只有后端客户端,并使用会话cookie进行前端授权。

最新更新