ADFS 3.0 MFA以RADIUS身份验证为第二因素(RADIUS的身份验证提供程序)?

时间:2016-03-17 17:55:36

标签: c# .net authentication adfs radius

请向我承诺,因为我解释了这个有意义的情景。我们有一个现有的远程访问基础架构,它使用RADIUS for 2FA - LDAP(AD)和第三方TOTP提供商。 TOTP提供商可以是RSA,Yubikey,Google,Azure等 - RADIUS服务器已经配置为允许多个可能的TOTP提供商作为第二个身份验证因素。

现在我们想要为我们的一些服务提供商实施ADFS,因为它具有强大的授权声明规则;但我们希望拥有第二个身份验证因素的安全性,以及我们目前在RADIUS设置中的灵活性。而不是为ADFS MFA设置相同的TOTP提供程序,因为它已在RADIUS中配置,因此我们认为可以使用RADIUS身份验证的结果作为ADFS中的第二个身份验证因素。除此之外,出于明显的安全原因,我们希望在我们的网络中有一个单一的入口点,因此我们不能在周边同时拥有ADFS和RADIUS。我们当然希望维护基于SAML的SSO,因此不能单独依赖RADIUS。我想明确表示我们不想替换RADIUS,因为太多的系统已经依赖它了;我们想要的是使用其现有的ADFS MFA功能。

我们目前在我们的F5 APM SAML-IdP上设置了这个场景,所以这不是什么新东西。我只是想知道ADFS是否可行,以及即使考虑更换当前的F5设置也难以实现。如果F5 APM可以做到;也许ADFS也可以吗?嗯,这至少是我的理由。

我查看了可能的选项,发现有必要创建自定义身份验证提供程序,如以下链接所述:

https://blogs.technet.microsoft.com/cloudpfe/2014/02/01/how-to-create-a-custom-authentication-provider-for-active-directory-federation-services-on-windows-server-2012-r2-part-2/

该指令足够详细,可用于测试;但我发现它在很大程度上取决于认证的第二个因素的实际来源。我找到了使用Google身份验证器和Yubikey实现此目的的明确说明(除了易于支持的MFA提供商);但我找不到有关为RADIUS创建身份验证提供程序的说明。

这甚至可能吗?有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

你应该可以这样做。一些注释基于你提到的

  • 由于您提到您有多个TOTP提供程序,因此您需要在ADFS中使用适配器来请求TOTP提供程序
  • 获得TOTP提供程序后,您可以控制输入表单。这可以通过编辑字段进行处理,您可以通过Java Script
  • 控制其用户体验
  • 一旦你有了提供者ID和OTP,我假设你可以通过一些RADIUS API来调用它来执行验证并获得结果。

希望有所帮助。

由于 // Sam(@MrADFS)

答案 1 :(得分:0)

对于任何想知道的人;我能够通过创建自定义身份验证提供程序来实现这一点,如我在问题中发布的technet博客中所述:

https://blogs.technet.microsoft.com/cloudpfe/2014/02/01/how-to-create-a-custom-authentication-provider-for-active-directory-federation-services-on-windows-server-2012-r2-part-2/

我在此链接中使用了.NET类来为提供程序实现RADIUS客户端,因为我找不到任何其他.NET API:

http://nradius.nw-network.com/web/

无论如何,它完美无缺!太糟糕了,我无法找到谁开发了那个班级,但我确实发了一个匿名的谢谢。