rest - 在服务器之间转发 cookie 以进行身份验证
问题描述
我需要分析以下认证场景。
涉及三个系统:
- 项目清单
- 系统“A”是客户端 Web 应用程序。它通过 REST 与其后端进行通信。
- 系统“B”是一个服务器端 Web 应用程序 (JSF)。它需要通过 REST 访问 A 的后端。
- 一个身份提供者,用于对两个系统的用户进行身份验证。所有系统都部署到不同的服务器/域。
系统“A”使用 SAML 2.0 通过身份提供者对用户进行身份验证。当用户通过身份验证时,它会创建一个用户会话并通过 cookie 将其映射到用户的浏览器。任何后续的 REST 调用都会携带用户的 cookie。
系统“B”也使用相同的身份提供者进行身份验证。B 的后端需要通过 REST 调用 A 的后端。它必须“在后台”进行身份验证,无需用户交互。我负责这个系统的开发。现在的问题:
- 我可以从“系统B”端检索“系统A”设置的浏览器cookies吗?
- 假设我可以检索它们:如果我在 REST 调用中转发它们,是否足以进行身份验证?
- 你看到其他解决方案了吗?(不得要求用户再次登录)
提前致谢。
解决方案
我通常通过以下方式之一解决此类问题。选项 1:代币交换。将 SAML 令牌转换为 JWT,并将 JWT 发送到后端。选项 2:SAML 令牌传播。将 SAML 发送到后端,并让后端接受 SAML 作为身份验证令牌。在实现中,前端将 cookie 映射到 SAML 令牌,或从 cookie/saml 构建 JWT。
推荐阅读
- c# - System.InvalidOperationException: '对象当前正在其他地方使用。'
- javascript - 如何使用 React 使用 axios 和使用 aws-sdk 预签名将文件上传到 S3 存储桶?
- json - 为多个目标主机创建 ansible 清单
- c++ - 以文件为参数的 C++ .exe
- azure-devops - 通过 REST API 将任务作为子项添加到故事中
- django - Django 3,我更改 DEBUG = False,当我发送信件时,图像消失了,为什么会发生这种情况?
- javascript - 在引导程序的 b 表中设置模板的 id
- react-native - 反应原生触摸多选
- c# - C# - Lambda - 对包含嵌套列表对象的列表数据进行分组
- python - 如何从多索引字典构建 Pandas DataFrame