design-patterns - 与其他组织启用单点登录的流程是什么?
问题描述
我有一个部署在 Azure 上的带有 Spring Boot 后端的 React 前端。
我们公司和我们的客户一样使用 Active Directory。
我们的客户表示他们希望在我们的应用程序中使用单点登录。
即他们在我们的应用程序上单击登录,然后将他们带到他们的公司登录页面
我对这个流程如何工作以及哪些部分是应用程序的哪些部分的责任没有很好的处理。
我不确定它是否是这样的,它主要在应用程序中处理:
- 用户点击登录
- Web 应用程序链接到 MS auth
- MS auth 重定向到正确的客户公司登录
- 客户公司 AD 使用 JWT 进行身份验证和响应
- Web 应用通过 REST API 调用将 jwt 转发给我们
- 后端连接到我们的 AD 并验证(?)它是一个有效的公司
- 后端使用另一个包含用户、公司、角色等的 JWT 响应 REST 请求
或者,如果是 AD 中的某些配置跳过了最后 3 个步骤。
我也不确定要在我们的 Active Directory 中存储什么。
- 我是否创建代表每个客户公司的用户?
- 还是与该 Web 应用程序相关的一组用户?
- 我应该将每个用户的角色存储在我们的 AD 中还是应该来自他们的 AD?
- 如果角色在他们的 AD 中,我应该告诉客户角色名称应该是什么,还是有办法在他们的角色和我们的角色之间进行一些映射?
这种设计模式是否有合适的名称来帮助我搜索示例?
解决方案
如果您的客户使用 Azure AD(包括 Office 365 帐户),您可以在您拥有的租户中将您的应用程序注册为“多租户”。查看这篇关于设计模式的文章和这篇关于多租户应用程序的 Azure AD 配置的文章。
如果您的客户端不在 Azure AD 上,您可以考虑使用Azure AD Connect和直通身份验证。我没有这方面的经验,但您可以查看这篇文章以获取更多信息。
推荐阅读
- mysql - 具有过滤实体关联的 Symfony 表单构建器
- docker - 无法从 Docker 容器中访问外部 URL
- python - 如何使用 python/pandas 消除具有连续值的行
- javascript - 谷歌地图 javascript api 。无法加载资源网络错误超时
- excel-2010 - 基于“已拒绝”规则的颜色行
- image - 在 RTE 中调整大小的 FAL 图像
- hadoop - 从 HDFS 加载 parquet 文件比从 S3 加载慢。这可能是什么原因?
- python - 如何在 Python 中将 RMSE 定义为函数
- sql - 如何使用flask从sqlite3中的三个表中获取数据
- mercurial - Mercurial:如何创建一个新的存储库,其中包含来自现有存储库的修订子范围?