【问题标题】:Architecture Direction Help: Creating an Azure Active Directory PAM Module架构指导帮助:创建 Azure Active Directory PAM 模块
【发布时间】:2016-09-30 21:14:18
【问题描述】:

我有兴趣创建一个针对 Azure Active Directory 进行身份验证的 Linux 可插入身份验证模块 (PAM)。看来 Oauth 2.0 是微软为此使用的。

在查看Authentication Scenarios 时,似乎“守护程序或服务器应用程序”可能是最有意义的,但我并不肯定。 “本机应用程序到 Web API”也可能是一种可能性,但是给出的所有应用程序流都显示启动一个弹出式浏览器实例进行身份验证,这在 PAM 中似乎是不可能的。因此,除非我要取消响应,否则流程似乎不起作用,并且取消响应似乎是个坏主意。

我的问题:

  1. 在这种情况下验证用户凭据的最佳方法是什么?是守护程序还是本机应用程序?
  2. 执行此操作的大致流程是什么? (例如,如果我使用的是守护进程,我应该调用哪些方法来验证用户凭据?)
  3. 知道如果为用户启用 2FA 会是什么样子吗?

感谢您的帮助。我觉得没有一个可用的选项真正适合这里,并且想确保我朝着正确的方向前进,直到我在这里投入大量时间。

【问题讨论】:

    标签: azure oauth-2.0 azure-active-directory pam


    【解决方案1】:

    您指向的 bureado 的 PAM 使用所谓的 OAuth“资源所有者密码凭据授予”。它基本上采用用户的用户名和密码并将它们传递给 Azure AD 进行身份验证。它有很多限制,Vittorio 描述了其中几个限制here。您指出的一个核心问题是 MFA 不起作用。

    对于这种情况,Azure AD 还支持 OAuth“设备配置文件流”。这里有一个代码示例,展示了如何在 .NET 中执行此操作:https://github.com/Azure-Samples/active-directory-dotnet-deviceprofile。我建议走那条路。

    【讨论】:

    • 谢谢。这证实了我的想法,并提供了我需要的所有信息。
    【解决方案2】:

    好的,我发现以下模块似乎主要做我想做的事情:

    https://github.com/bureado/aad-login

    他选择使用“Native App”。如果这是“最佳选择”,我仍然不肯定,因此我将把它留给其他答案。如果有人能解释为什么这是最佳选择,我会很高兴。

    同时,我现在正在尝试像 pam_ldap 或 pam_kerberos 一样导入 AAD 组成员资格,但我很难弄清楚它应该如何工作,并发布了另一个问题:

    How to write a PAM module which changes group membership?

    如果以后有人遇到此问题并想要做同样的事情,我们计划将具有此扩展功能的最终修改解决方案开源。它还没有这样做,但代码在 GitHub 上:

    https://github.com/CyberNinjas/aad-login

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多