2017-10-04 118 views
0

我们正在使用自定义身份验证源运行simpleSAMLphp IDP,但现在面临的挑战是添加对多因素身份验证(MFA,也就是双因素身份验证或两步验证)的支持。我已经开始尝试在同一个自定义Auth Source中实现MFA支持,但它似乎更复杂,更耦合,而不是必要的。实施双因素认证安全吗?在simpleSAMLphp中作为Auth Proc,还是应该使用Auth Source?

此外,我注意到一个simpleSAMLphp模块(aidan-/SimpleTOTP)使用Auth Proc来实现MFA。

然而,the simpleSAMLphp page on Auth Procs说,这是“不neccessarily个好主意”,以实现类似的访问控制在验证PROC​​,而不是鼓励使用验证特效的东西像从用户获得同意或搞乱与用户属性是将被退回给SP。

所以问题是,simpleSAMLphp的设计是否安全(足够)使用Auth Proc来处理登录的MFA部分(在Auth Source已验证用户名和密码之后),还是存在简单的方法,用户可以简单地绕过MFA部分,并已经在IDP上有一个活动的会话?

编辑:另一个MFA相关模块(simplesamlphp/simplesamlphp-module-yubikey)也实现为验证PROC​​,因此这似乎是去一个安全的方式,但我爱的人谁真正知道这是否是听到打算使用simpleSAMLphp方式。

回答

0

为了避免留下这个问题没有一个公认的答案,我会回答我的问题。 (注意:虽然@ libregeek的回答很有帮助,但接受他的回答会误导后来的读者,以了解对我有用的东西。)

基于...

  • 的用于MFA和作为AuthProcs实施的多个其他simpleSAMLphp模块的存在,
  • 实施我溶液作为AuthProc并且具有所有确认它正在工作,需要的话,和
  • 多个测试discussion链接到@ libregeek的答案

...它似乎足够安全的使用simpleSAMLphp AuthProc实现MFA。

0

AuthProc在SimpleSAMLphp中实现MFA不是一个好主意。问题是,如果MFA验证失败,则登录的会话将被孤立。

最理想的方法是开发一个身份验证插件,但是我们可能必须在现有的身份验证插件中分发功能,就像“重新发明轮子”一样。当我们拥有多个授权资源时,这变得更加复杂。

另一种方法是在SP上执行MFA,但问题是我们需要为我们使用的每个SP构建它。另外,它可能不是用户友好的选择。

从开发人员的角度来看,开发AuthProc过滤器可能是最简单的选择,因为它可以重用许多现有的东西。

要解答您的问题,AFAIK,SimpleSAMLphp在AuthProc中没有任何安全措施来处理登录的MFA部分。但是,我认为登录用户不能绕过AuthProc过滤器。

编辑: 有一个在SimpleSAMLphp邮件列表中一个有趣的讨论:https://groups.google.com/forum/#!topic/simplesamlphp/ocQols0NCZ8

+0

所以,只要我们处理删除孤立的会话,你会认为一个Auth Proc会是一个可接受的方式来做到这一点? [Jaime的评论](https://groups.google.com/d/msg/simplesamlphp/ocQols0NCZ8/RL_WAcryBwAJ)在您所关联的讨论中似乎也支持认为Auth Procs是实现MFA的可接受位置的观点,即I找到鼓励。 – matt

+1

这是我的理解,但它可能不正确。我们用Yubikey和Google Authenticator开发了一个类似的AuthProc过滤器(用于我们的客户端),到目前为止没有任何问题。 – libregeek

相关问题