Angular网站与SAML(SSO)的集成

时间:2018-02-08 14:16:34

标签: python angularjs single-sign-on saml saml-2.0

我有一个网站,其中包含AngularJS中的前端和Python中的后端。

目前,我们正在为用户提供一个简单的网络表单来获取凭据。

表单中的凭据将发送到Python后端(flask webservice)(这是一种基本的身份验证机制)。

现在,我们要在网站上启用单点登录(SSO)。我们的身份提供商是PingonePing Federate

我从头开始......没有事先了解SAMLSSO。 我想知道要走哪条路?

使用哪些库,更重要的是,如何使用它们? 在这个时间点,我不确定SAML如何识别用户,然后对他/她进行身份验证。

1 个答案:

答案 0 :(得分:3)

SAML的基本交换始于用户在Python服务器上请求资源(页面,SPA应用程序)。服务器确定用户是否已经过身份验证(具有会话,JWT令牌等),如果没有,则创建SAML请求令牌以通过重定向发送到身份提供者(为此使用库)。

身份提供商通过数字签名验证SAML请求令牌。验证令牌后,系统会要求用户登录(如果尚未对其进行身份验证)。用户通过身份验证后,身份提供商会创建一个SAML请求令牌,该令牌通过重定向显示在您的服务器上。

收到SAML请求令牌后,您的服务器会通过数字签名验证令牌,并将用户视为已登录(再次使用此部件的库)。令牌将最低限度地识别用户,但可以包含授权和其他信息。此时,您的用户已经过身份验证,您可以在服务器上创建会话,或者创建一个JWT令牌,以便在角度应用程序中向Python后端标识您的用户。

创建SAML请求令牌并在生成的SAML响应令牌中进行处理并非易事。如上所述,使用库,最好是经过时间测试的库。我不是Python开发人员,但我发现了一些谷歌搜索:onelogin/python-saml

Wikipedia有一个很好的序列图来证明这一点,当然你可以仔细阅读Oasis SAML docs website上的许多文档。

祝好运实施。我在Java中已经完成了几次。