工程的博客

第三方应用程序的单点登录

通过凯尔Lim

2019年5月3日 工程的博客

分享这篇文章

去年冬天,我在Databricks的身份和访问管理(IAM)团队担任软件工程实习生。在此期间,我有机会参与多个项目,包括整个团队共同参与的一个大项目以及我自己的专门项目。在这篇博客中,我将分享我对后者的经验。我专门的实习项目是建立单点登录为Databricks管理的第三方应用程序(如统一支持门户和想法门户)提供工作流,以改善Databricks提供的整体企业平台体验。bob体育客户端下载

项目实施

背景

Databricks致力于提供良好的用户体验,为此我们提供了许多对企业级客户体验至关重要的第三方服务。这包括用于提交特性请求的Ideas门户,用于归档支持票据和访问内部文档的统一支持门户,以及用于访问Databricks产品培训材料的教育门户。这些都是客户可能经常访问的服务,为所有这些服务创建和维护凭据是很差的用户体验。

我们简化体验的解决方案是利用Databricks工作空间作为标识提供者。为此,我们在Databricks中使用您的凭据为所有这些第三方服务实现了单点登录工作流。

用户工作流程

我们希望用户工作流尽可能简单。例如,如果您在没有登录的情况下访问支持门户中的票据,我们希望实现无缝转换,将您重定向到Databricks进行身份验证,经过身份验证,然后重定向到幕后。

下面是高层的工作流程:

  1. 您可以浏览到第三方门户网站,例如Aha!
  2. Ideas门户没有任何活动的浏览器会话,因此它重定向到Databricks门户进行身份验证。
  3. Databricks门户没有任何活动的浏览器会话,因此呈现给您的是登录页面。
  4. 成功登录后,将为Databricks门户创建一个浏览器会话,并生成一个访问令牌。
  5. 浏览器通过Databricks门户的重定向响应重定向到Ideas门户。
  6. Ideas Portal接受令牌,您就通过了身份验证。
  7. 在验证时为Ideas Portal创建一个浏览器会话。

使用JWT的SSO

实现了单点登录工作流JSON Web令牌(JWT)。使用JWT的主要优点是轻量级、易于维护,并且很容易扩展到将来的新服务。Databricks门户将使用HMAC算法,.在创建JWT之后,我们将与第三方服务的授权服务器交换令牌,以验证用户的声明。之后,我们终于可以在第三方认证和无缝登录!

SSO重定向

为了打造完美的用户体验,我们需要让身份验证流程在幕后无缝工作。例如,假设您收到了一封带有支持票据和支持门户链接的电子邮件。您单击链接并期望已经登录。如果您被迫输入凭据或手动进入Databricks工作空间,则会中断您的工作流程。为了解决这个问题,我们在后端进行了一些重定向,以适当地进行身份验证和登录。

SSO流背后的秘密在我们的cookie存储中。当您访问Databricks工作空间时,Databricks将设置一个顶级域名(TLD) cookie与您的工作区ID。当您在未登录的情况下访问第三方应用程序时,您将被重定向到另一个页面,该页面读取您的工作空间ID,在提供的工作空间上进行身份验证,最后将您重定向到您所在的页面。如果您是多个工作空间的一部分,则为每个工作空间提供了一个选项。使用此重定向流程,Databricks可以将您登录到我们的第三方服务而不会中断。

结论

在IAM团队的工作让我学会了如何作为内部开发人员使系统可扩展,研究面向消费者的功能,学习如何使产品更健壮和用户友好,并对使用Databricks的客户产生影响。

我要感谢我的导师Alexandra Cong,无论何时我需要她,她都会在我身边;我的经理Yun Park,在我实习期间给予我所有的支持。此外,我要感谢罗希特·古普塔(Rohit Gupta)在整个实习项目中对我的持续指导,我还要感谢IAM团队的其他成员在我在这里的四个月里给予我的宝贵帮助!

免费试用Databricks
看到所有工程的博客的帖子