2016-09-30 91 views
0

我有兴趣创建一个可针对Azure Active Directory进行身份验证的Linux可插入身份验证模块(PAM)。看起来Oauth 2.0是微软用于此的东西。体系结构方向帮助:创建Azure Active Directory PAM模块

在审查Authentication Scenarios似乎“守护进程或服务器应用程序”可能是最有意义的,但我不积极。 “本地应用程序到Web API”也可能是一种可能性,但是所有的应用程序流都展示出了一个弹出式浏览器实例进行身份验证,这在PAM中看起来不太可能。因此,除非我放弃流量似乎无法正常工作的回应,否则报废回复似乎是一个糟糕的主意。

我的问题:

  1. 什么是验证用户的凭据对于这种情况最好的办法?是守护程序还是本机应用程序?
  2. 什么是我会在这样做的粗略流程? (例如,如果我正在使用守护程序,我会通过什么调用来验证用户信用?)
  3. 有关如果为用户启用2FA时的外观如何的想法?

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

回答

1

bureado的PAM你点使用了所谓的OAuth的“资源所有者密码凭据格兰特”。它基本上采用用户的用户名&密码并将它们传递给Azure AD进行身份验证。它有一些局限性,其中有几个是Vittorio描述的here。你指出的核心问题是MFA不起作用。

对于这种情况,Azure AD还支持OAuth“Device Profile Flow”。这里有一个代码示例,演示如何在.NET中执行此操作:https://github.com/Azure-Samples/active-directory-dotnet-deviceprofile。我建议去那条路线。

+0

谢谢你。这证实了我的想法,并提供了我需要的所有信息。 – Doug

0

好吧,我发现,似乎主要是做什么我期待无论如何做以下模块:

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

他选择用“原生应用”。如果这是“最佳选择”,我仍然不积极,因此我打算把这个问题留给其他答案。如果有人能解释为什么这是最好的选择,我很乐意。

同时,我现在试图让像pam_ldap的,或pam_kerberos需要进口AAD组成员,但我有一个很难搞清楚这是怎么应该工作,并已经发布了另一个问题:

How to write a PAM module which changes group membership?

如果没有人碰到这个以后,想要做同样的事情,我们计划在开源这个扩展功能的最终修改的方案。它没有做它,但代码是在GitHub上的位置:

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