SAML-使用角度、node.js和身份提供程序进行身份验证 [英] SAML-Authentication using angular, node.js and an identity provider

查看:21
本文介绍了SAML-使用角度、node.js和身份提供程序进行身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用SAML2实现SSO。 但是我不知道如何让它在分布式系统中工作,在分布式系统中,每个实例都在自己的服务器上独立运行。环境由三个实例组成:

  • 实例1:棱角前端
  • 实例2:a node.js后台(使用exts.js+Passport)
  • 实例#3:SAML实例(身份提供者)
问题是,如果前端调用受保护的后端路由,那么最好的方法是什么? 哪一系列操作可视为良好实践?

目前我脑子里有这样的行为:

  1. 前端向受保护的后端路由发送请求
  2. 因为用户未经过身份验证,所以服务器启动到身份提供程序提供的SSO页面的重定向。
  3. 在那里输入凭据
  4. 用户由SAML实例进行身份验证,并将请求发送回服务器。
  5. 现在用户已通过身份验证,服务器将包含请求的资源的响应发送回客户端。

但是只要我想到这个序列,我就会意识到这是行不通的。 因为前端是自己的实例,独立于后端。 如果您有一个独立的前端实例,则由Passport发起的到SSO页面的重定向不起作用。 如果您使用浏览器直接调用受保护的路由,则可以使用此功能,因为这样您就只有两个通信伙伴(服务提供商和身份提供商),而不是三个。 但这里不是这样。

谢谢并问候

Philipp

推荐答案

我用此徽标在以前的工作中做过类似的事情:

  1. 以角度(获取凭证的简单表单)实现登录页面,然后在后台调用登录服务。
  2. 后端登录服务应根据身份提供者验证前端提供凭据(我确信它们会为您提供一个URL,您可以在其中插入这些参数)。
  3. 通过身份验证后,在后台调用身份验证服务为该用户生成Token(Passport JS应负责),然后将该Token发回前端。
  4. 在前端,实现一个保护,该保护应将令牌/设置用户凭据处理到本地存储中.
  5. 在前端,还要实现一个拦截器,该拦截器在每个XHR标头中注入此令牌,或者在令牌不存在或过期的情况下将用户重定向到登录表单。
  6. 在后台,logique是经典的(在发回数据之前,从XHR头部验证Token的有效性/如果验证不通过,告诉前端登录)。

使用此徽标,您将使前端远离身份提供者,并与后端保持一致。

这篇关于SAML-使用角度、node.js和身份提供程序进行身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆