【问题标题】:Which OAuth strategy to use to authenticate owned SPA and which for 3rd parties?使用哪种 OAuth 策略对拥有的 SPA 进行身份验证,以及哪种 OAuth 策略用于第三方?
【发布时间】:2019-01-19 05:58:03
【问题描述】:

案例:System-K 有很多微服务。其中之一是 OAuth 微服务,它为第三方提供访问令牌,这些第三方将使用由 System-K 的其他微服务管理的一些数据。 System-K 还有一个前端是一个 SPA Web 应用程序。此 SPA 也使用与第 3 方相同的数据,但不同之处在于,此 SPA 将能够查询特权数据,因为它是拥有的 Sysmte-k 前端。

问题:SPA 使用哪种 OAuth 策略?或者我应该使用另一种方法来处理 SPA 发出的身份验证请求,并将 OAuth 服务器留给第 3 方使用?

幕后: Web 应用程序是使用 Angular 7+ 构建的,它将请求发送到作为微服务的 APIGateway,它是 Sysmte-k 的一部分,然后 APIGateway 将此类请求路由到目标微服务。 第三方 OAuth 请求也被发送到 APIGateway,后者路由到 OAuth 微服务。所有微服务都是在 Node 中构建并使用 TypeScript 编写的。

更新 1 我不希望在 SPA 中进行身份验证的用户看到屏幕显示“您允许 System-K 访问您的 Sysmte-k 配置文件吗?”因为 SPA 是 System-k 客户端本身。

【问题讨论】:

    标签: oauth-2.0 microservices single-page-application


    【解决方案1】:

    问题:- SPA 使用哪种 OAuth 策略?或者我应该使用 另一种处理 SPA 发出的身份验证请求的方法和 只为第 3 方保留 OAuth 服务器?

    除非您的 SPA 有后端服务器(这意味着您的 SPA 不是真正的 SPA),否则您只能使用 implicit OAuth。隐式 OAuth 在浏览器的 JavaScript 中运行。

    对于隐式 OAuth,我强烈建议使用第三方身份提供商(Google、Auth0、Okta)。在您自己的代码中获得正确的安全性非常困难。

    如果您可以添加后端服务来提供三足 OAuth,那么您的安全性将会提高,并且您将拥有更多选择。我再次推荐第三方身份提供商。

    【讨论】:

    • “三足 OAuth”是什么意思? PD:我的 SPA 是一个 Angular 应用程序,它的资产通过 node-express 作为 Web 服务器提供服务。
    • 三足 OAuth 意味着您有一个面向公众的服务器来处理身份验证。三意味着客户端、您的服务器和身份提供者。这允许更多 OAuth 功能,例如离线访问、刷新令牌等。developer.twitter.com/en/docs/basics/authentication/overview/…
    • 如果我集成第三方身份提供商,流程会如何?
    • 为什么带有后端的 SPA 不是真正的 SPA?
    • 这不是 OAuth 的工作方式。您将实现implicitexplicit。用户将离开您的页面以访问身份提供者的站点。用户无法决定。由于您不希望用户离开 SPA,因此使用 OAuth 的选项为零。
    猜你喜欢
    • 2016-03-09
    • 1970-01-01
    • 2012-04-30
    • 2016-02-18
    • 2020-10-21
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多