您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
saas是什么意思(saas领域什么意思)
路由,身份验证,产品saas是什么意思(saas领域什么意思)
发布时间:2020-12-06加入收藏来源:互联网点击:
应该有一个跨服务共享的专用身份验证服务。这里 JSON Web 令牌就可以派上用场,因为我们能轻松地通过标头跨多个服务传递令牌和其他有用的用户信息。
可以从路由服务或产品 Web 应用中调用身份验证服务。如果从产品 Web 应用调用身份验证服务,就能让产品 Web 应用所有者灵活地对他们想要保护的任何页面实施身份验证。这种灵活性让服务所有者可以管理公共页面,例如用户注册页。这种方法还减少了在路由服务中执行的逻辑。
或者也可以在路由服务中处理身份验证过程。从安全角度来看,这使身份验证处理更容易审核,因为我们无需查看每一个产品 Web 应用页面。这也意味着,如果需要让一个网页开启公开访问权限,则应该采用某种形式的白名单。这是另一个可配置性折衷。
实现技巧:AWSCognito、Auth0 或任意 JSON Web 令牌(JWT)身份验证服务。
基于角色的访问控制(RBAC)
验证用户身份后,我们需要能够回答以下问题:
是否允许登录用户访问此页面或他们尝试访问的信息?
可能的答案有:
是的,用户 Alice 属于组织 A,该组织有权访问内容 A。否,用户 Bob 属于组织 B,该组织无权访问内容 B。是否允许登录用户执行此动作?
可能的答案有:
是的,用户 Alice 具有管理员角色,该角色具有删除已注册用户的权限。否,用户 Bob 只有成员角色,该角色对所有内容只有只读权限。RBAC 帮助我们回答上述问题,从而让我们的 Web 应用可以允许或撤消用户执行的特定动作。
下图显示了对用户进行身份验证并使用 RBAC 检查其权限时发生的事件流。
下面的伪代码说明了如何在特定用例中使用 RBAC 服务。
检查用户是否具有查看页面的权限。
if (userHasPermissionToViewPage(userId)) {showPage();}else {showNoPermissionError();}
检查用户是否有权执行某个动作。
复制代码
if (userHasPermissionToPerformAction(userId)) {showButton();} else {doNothing();}
实现提示:与其他服务相比,这个服务的通信量预计会更高,具体取决于你的权限会有多少粒度。你可以考虑使用和 Web 应用存储库实现类似的选择:Java、Go 或 C#,搭配 RDBMS 数据存储和一个缓存系统。用户权限管理需要一个 Web 管理 UI。
高阶设计
下图显示了运行时中组件之间的交互方式。
高阶序列
下图显示了路由服务将用户路由到请求页面的序列。从 Web 应用存储库中检索到产品 Web 应用详细信息之后,便会发生这些序列。
选项 1
在产品 Web 应用中调用身份验证。
选项 2
在路由服务中调用身份验证。
使用 Web 应用存储库、RBAC 和身份验证页面作为一个 Web 应用
Web 应用存储库、RBAC 和身份验证服务需要它们自己的 Web UI 来管理数据或接收用户输入。Web 应用存储库、RBAC 和身份验证服务均有它们自己的 Web 应用。使用另一个具有管理 UI 的 Web 应用可以管理对某个 Web 应用的访问权限。
某些 Web 应用用作其他组件的 UI。
Web 应用存储库 UI 允许我们使用所需的权限来管理路径和 Web 应用 URL。
RBAC UI 用于管理用户、组织、角色和权限。
身份验证服务的前端 UI(即登录页面)也被部署为 Web 应用。
技术说明
服务通过 HTTPS 调用进行通信。服务是内部的,但某些 Web 应用由路由服务公开提供。这里没有详细介绍冗余的信息。你可以简单地在构成 SaaS 平台的服务之前添加一个负载均衡器,并在多个区域中运行它们。长期改进
下面总结了一些应该牢记的准则,可以帮助你成功运营 SaaS 平台。
1. 将技术文档视为产品一部分
关键在于要让团队能通过良好的文档管理产品 Web 应用,同时充分利用可用的工具。好的文档可以最大程度地减少你的团队重复询问 SaaS 平台相关问题的需求。
2. 给工程师同事提供便利
你可以在用于 RBAC 和 Web 应用存储库的 Web UI 管理工具之上,再开发一个 NodeJS/React 模板,其中包括开箱即用的 RBAC 和身份验证的客户端,以尽量减少将 Web 应用添加到 SaaS 平台所需的工作。
这样你的工程师或你自己就可以方便地从这个模板创建新的 Web 应用,而无需花费很多精力将其集成到平台中。
3. 工程设计审查
糟糕的代码可能会浪费数天甚至数周的开发时间,但相比之下,糟糕的架构决策可能会浪费数月至数年的时间。对于大型公司而言,工程设计审查可能更容易推进;但如果你自己是一名开发人员,那么也可以从社区中认识的其他工程师那里获得反馈。
花费合理的时间预先编写工程设计文档,并在工程设计审查期间获得反馈,可以为你节省很多时间。应该验证软件设计假设,并让其他工程师为你设计的软件架构找出尽可能多的漏洞。
我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书!
本文到此结束,希望对大家有所帮助呢。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |