我有一个网站与前端在AngularJS和后端的Python。
目前,我们为用户提供了一个简单的获取凭据的webform。
表单中的凭据被发送到flask后端( Python )(这是一个基本的身份验证机制)。
现在,我们要在website.Our身份提供者是Pingone或Ping Federate上启用单点登录(SSO)。
我从头开始,没有SAML或SSO的先验知识。我想知道该走哪条路?
使用哪些库,更重要的是,如何使用它们?在这一点上,我不确定SAML如何准确地识别用户,然后对其进行身份验证。
发布于 2018-02-09 08:07:35
SAML的基本交换始于用户请求Python服务器上的资源(页面、SPA应用程序)。服务器确定用户是否已经通过身份验证(具有会话、JWT令牌等),如果没有,则创建一个SAML请求令牌,通过重定向将其发送到身份提供者(为此使用库)。
身份提供者通过数字签名验证SAML请求令牌。一旦验证了令牌,就会要求用户登录(如果他们还没有在那里进行身份验证)。一旦用户通过身份验证,身份提供者就会创建一个SAML请求令牌,该令牌将通过重定向返回到您的服务器。
在收到SAML请求令牌时,您的服务器通过数字签名验证令牌,您将该用户视为已登录(同样,对此部分使用库)。令牌将最低限度地标识用户,但可以包含授权和其他信息。此时,您的用户已经通过了身份验证,您可以在服务器上创建一个会话,或者创建一个JWT令牌,以便在您的angular应用程序中识别Python后端的用户。
创建SAML请求令牌并在生成的SAML响应令牌中进行处理不是一件容易的事。如上所述,使用一个库,最好是经过时间测试的库。我不是Python开发人员,但我在谷歌上找到了这个:onelogin/python-saml。
Wikipedia有一个很好的序列图来演示这一点,当然,您可以仔细阅读Oasis SAML docs website上的许多文档。
祝你实现顺利。我在Java中已经做过几次了。
https://stackoverflow.com/questions/48687620
复制相似问题