架构方向帮助:创建 Azure Active Directory PAM 模块
Architecture Direction Help: Creating an Azure Active Directory PAM Module
我有兴趣创建一个 Linux 可插入身份验证模块 (PAM),以针对 Azure Active Directory 进行身份验证。 Microsoft 似乎为此使用了 Oauth 2.0。
在回顾 Authentication Scenarios 时,似乎 "Daemon or Server Application" 可能最有意义,但我并不肯定。 "Native Application to Web API" 也有可能,但所有给定的应用程序流程都显示启动弹出式浏览器实例以进行身份验证,这在 PAM 中似乎是不可能的。因此,除非我取消响应,否则流程似乎不起作用,并且取消响应似乎是个坏主意。
我的问题:
- 在这种情况下验证用户凭据的最佳方法是什么?是守护进程还是本机应用程序?
- 要执行此操作,我要考虑的粗略流程是什么? (例如,如果我使用守护进程,我应该调用什么来验证用户信用?)
- 知道如果为用户启用 2FA 会是什么样子吗?
感谢您的帮助。我觉得 none 的可用选项非常适合这里,并且想确保我的方向是正确的,直到我在这里投入大量时间。
好的,我发现以下模块似乎大部分都在做我想做的事情:
https://github.com/bureado/aad-login
他选择使用"Native App"。如果这是 "best option",我仍然不确定,因此我将把它留给其他答案。如果有人能解释为什么这是最好的选择,我会很高兴。
与此同时,我现在正在尝试将 AAD 组成员身份导入 pam_ldap 或 pam_kerberos,但我很难弄清楚它应该如何工作,并发布了另一个问题:
How to write a PAM module which changes group membership?
如果以后有人遇到这个问题并想做同样的事情,我们正计划开源具有此扩展功能的最终修改解决方案。它还没有这样做,但代码在 GitHub 此处:
您指向的 bureado 的 PAM 使用所谓的 OAuth "Resource Owner Password Credentials Grant"。它基本上获取用户的用户名和密码并将它们传递给 Azure AD 进行身份验证。它有很多限制,Vittorio 描述了其中的几个 here。你指出的一个核心问题是MFA不起作用。
对于这样的场景,Azure AD 也支持 OAuth "Device Profile Flow"。这里有一个代码示例,展示了如何在 .NET 中执行此操作:https://github.com/Azure-Samples/active-directory-dotnet-deviceprofile。我建议走那条路。
我有兴趣创建一个 Linux 可插入身份验证模块 (PAM),以针对 Azure Active Directory 进行身份验证。 Microsoft 似乎为此使用了 Oauth 2.0。
在回顾 Authentication Scenarios 时,似乎 "Daemon or Server Application" 可能最有意义,但我并不肯定。 "Native Application to Web API" 也有可能,但所有给定的应用程序流程都显示启动弹出式浏览器实例以进行身份验证,这在 PAM 中似乎是不可能的。因此,除非我取消响应,否则流程似乎不起作用,并且取消响应似乎是个坏主意。
我的问题:
- 在这种情况下验证用户凭据的最佳方法是什么?是守护进程还是本机应用程序?
- 要执行此操作,我要考虑的粗略流程是什么? (例如,如果我使用守护进程,我应该调用什么来验证用户信用?)
- 知道如果为用户启用 2FA 会是什么样子吗?
感谢您的帮助。我觉得 none 的可用选项非常适合这里,并且想确保我的方向是正确的,直到我在这里投入大量时间。
好的,我发现以下模块似乎大部分都在做我想做的事情:
https://github.com/bureado/aad-login
他选择使用"Native App"。如果这是 "best option",我仍然不确定,因此我将把它留给其他答案。如果有人能解释为什么这是最好的选择,我会很高兴。
与此同时,我现在正在尝试将 AAD 组成员身份导入 pam_ldap 或 pam_kerberos,但我很难弄清楚它应该如何工作,并发布了另一个问题:
How to write a PAM module which changes group membership?
如果以后有人遇到这个问题并想做同样的事情,我们正计划开源具有此扩展功能的最终修改解决方案。它还没有这样做,但代码在 GitHub 此处:
您指向的 bureado 的 PAM 使用所谓的 OAuth "Resource Owner Password Credentials Grant"。它基本上获取用户的用户名和密码并将它们传递给 Azure AD 进行身份验证。它有很多限制,Vittorio 描述了其中的几个 here。你指出的一个核心问题是MFA不起作用。
对于这样的场景,Azure AD 也支持 OAuth "Device Profile Flow"。这里有一个代码示例,展示了如何在 .NET 中执行此操作:https://github.com/Azure-Samples/active-directory-dotnet-deviceprofile。我建议走那条路。