我有实施涉及客户端和资源服务器的各种 OAuth 2.0 场景的经验,包括从非安全服务到我的客户端的调用,反之亦然。然而,我遇到过一种情况,让我对 OAuth 2.0 授权过程有点困惑,特别是授权提示应该何时何地出现。
场景: 我有一个 Spring Boot 应用程序,我将其称为 Service1,使用 OAuth 2.0 客户端依赖项进行设置。该服务包括一个使用 Google 作为身份提供商的登录表单。我的目标是让 Service1 向另一个服务(我们将其称为 Service2)发送请求,该服务不受 OAuth 2.0 的保护。我不确定在这种情况下授权流程应如何进行以及授权应在何处进行。
之前,我已经成功实现了一个涉及两个 Spring Boot 服务的场景:一个充当资源服务器,另一个充当 OAuth 2.0 客户端。在此设置中,当尝试访问从资源服务器检索数据的端点时,会弹出一个授权窗口。登录后成功返回数据。
我想要实现的目标: 我的目标是复制如上所述的类似流程,但有所不同。这是我设想的概念图:
我打算用虚拟服务代替它们以进行实验,而不是使用图中提到的特定“SnapStore”和“打印服务”。我的主要问题围绕服务间通信的访问令牌的必要性。具体来说,当我从虚拟非 OAuth 2.0 服务向 OAuth 2.0 安全服务发送请求时,我会收到 302 响应以及授权链接,然后我会重定向该链接。
问题:
任何关于如何正确设置和处理此授权流程的见解或指导将不胜感激。
在您的场景中,Service1 充当 OAuth 2.0 客户端,Service2 是不安全的服务。当 Service1 需要访问 Service2 时,授权流程通常取决于 Service2 的要求以及服务之间交互的性质。
以下是在此场景中处理 OAuth 2.0 授权流程的方法:
与Service2交互:
授权流程:
处理授权提示:
处理重定向:
服务间通信:
综上所述,在Service1需要访问非安全服务(Service2)的场景下,可以绕过OAuth 2.0授权流程,直接进行HTTP请求。但如果Service2需要认证或授权,则需要根据其要求进行处理,其中可能涉及重定向和用户授权提示。