SAML-使用角度、node.js和身份提供程序进行身份验证 [英] SAML-Authentication using angular, node.js and an identity provider
本文介绍了SAML-使用角度、node.js和身份提供程序进行身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用SAML2实现SSO。 但是我不知道如何让它在分布式系统中工作,在分布式系统中,每个实例都在自己的服务器上独立运行。环境由三个实例组成:
- 实例1:棱角前端
- 实例2:a node.js后台(使用exts.js+Passport)
- 实例#3:SAML实例(身份提供者)
目前我脑子里有这样的行为:
- 前端向受保护的后端路由发送请求
- 因为用户未经过身份验证,所以服务器启动到身份提供程序提供的SSO页面的重定向。
- 在那里输入凭据
- 用户由SAML实例进行身份验证,并将请求发送回服务器。
- 现在用户已通过身份验证,服务器将包含请求的资源的响应发送回客户端。
但是只要我想到这个序列,我就会意识到这是行不通的。 因为前端是自己的实例,独立于后端。 如果您有一个独立的前端实例,则由Passport发起的到SSO页面的重定向不起作用。 如果您使用浏览器直接调用受保护的路由,则可以使用此功能,因为这样您就只有两个通信伙伴(服务提供商和身份提供商),而不是三个。 但这里不是这样。
谢谢并问候
Philipp
推荐答案
我用此徽标在以前的工作中做过类似的事情:
- 以角度(获取凭证的简单表单)实现登录页面,然后在后台调用登录服务。
- 后端登录服务应根据身份提供者验证前端提供凭据(我确信它们会为您提供一个URL,您可以在其中插入这些参数)。
- 通过身份验证后,在后台调用身份验证服务为该用户生成Token(Passport JS应负责),然后将该Token发回前端。
- 在前端,实现一个保护,该保护应将令牌/设置用户凭据处理到本地存储中.
- 在前端,还要实现一个拦截器,该拦截器在每个XHR标头中注入此令牌,或者在令牌不存在或过期的情况下将用户重定向到登录表单。
- 在后台,logique是经典的(在发回数据之前,从XHR头部验证Token的有效性/如果验证不通过,告诉前端登录)。
使用此徽标,您将使前端远离身份提供者,并与后端保持一致。
这篇关于SAML-使用角度、node.js和身份提供程序进行身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文