将laravel应用程序与MS Active Directory集成,但限制可以访问的用户

将laravel应用程序与MS Active Directory集成,但限制可以访问的用户,laravel,azure,active-directory,azure-active-directory,office365,Laravel,Azure,Active Directory,Azure Active Directory,Office365,我有一个自定义应用程序,仅在当前用户由超级管理员创建的情况下供内部使用。有些用户来自企业内部,有些用户来自外部,例如供应商/客户 我正在寻找一种将MS Active Directory集成为登录选项的方法,但希望能够限制哪些业务用户可以实际使用此方法 我已经搜索了所有MS文档,并且有关于不同oauth方法的所有文档,但不确定哪一种适合我的需要 我在想,也许我需要给管理员一种方式来浏览广告,并选择可以登录的用户,然后在mysql数据库中创建具有某种MS用户ID的非活动用户帐户。然后提供一个“使用M

我有一个自定义应用程序,仅在当前用户由超级管理员创建的情况下供内部使用。有些用户来自企业内部,有些用户来自外部,例如供应商/客户

我正在寻找一种将MS Active Directory集成为登录选项的方法,但希望能够限制哪些业务用户可以实际使用此方法

我已经搜索了所有MS文档,并且有关于不同oauth方法的所有文档,但不确定哪一种适合我的需要

我在想,也许我需要给管理员一种方式来浏览广告,并选择可以登录的用户,然后在mysql数据库中创建具有某种MS用户ID的非活动用户帐户。然后提供一个“使用MS登录”按钮,该按钮执行到MS并返回站点的常规身份验证重定向过程。在这一点上,我可以检查一个ID,如果该ID与允许的用户帐户匹配,如果匹配,则同步其余数据,例如姓名、电子邮件、电话等

我已经找到了以下链接:


如果您想这样做,超级管理员必须在AAD中始终具有此权限。在我看来,这不太实际

我会在服务负责人的帮助下完成这样的应用程序分配。您将角色(查找应用程序角色)分配给用户,然后您的业务逻辑必须决定用户拥有哪些权限。如果要使用应用程序角色功能,则可以在其帮助下限制对角色的访问。所有用户都可以登录,但只有具有特定角色的用户才能查看应用程序的内容


我希望这些提示有助于找到正确的方向,但没有银弹解决方案…:/

您的首要任务是让用户能够登录基于Laravel的应用程序。为此,我强烈建议不要尝试重新发明轮子(至少不完全),而是使用现有的Laravel软件包。可能是最好的开始,因为它有一个很长的现有列表,包括三个已经可以与Azure广告一起使用的:和。(注意:虽然我自己没有测试过其中任何一个,但前两个似乎最有希望,因为它们使用了较新的v2端点。)

在授权(控制访问)方面,您有两种选择:

  • Azure AD上的控件

    将应用程序与Azure AD集成后,您可以在Azure AD中配置应用程序以要求用户分配,然后通过向应用程序分配(或不分配)用户来控制对应用程序的访问。未分配的用户甚至无法通过登录页面

    您可以将Azure AD的现有体验用于,也可以全力以赴将此体验直接构建到基于Laravel的应用程序中,利用Azure AD Graph API创建[应用程序角色分配](和用户选取器体验)

    提示:在任何一种情况下,请记住,您都可以在Azure AD中使应用程序“超级用户”成为应用程序的“所有者”(Azure AD>企业应用程序>(应用程序)>所有者),这将允许他们分配用户,而无需在Azure AD中授予他们任何其他特权

  • 应用程序中的控件

    在这种方法中,您允许所有用户使用Azure AD登录应用程序,但随后您使用应用程序自己的授权逻辑来决定谁进一步登录,以及他们在应用程序中扮演什么角色


  • 实际上,您很可能会发现最好的方法是将两者结合使用,其中一部分授权由Azure AD强制执行,下一级授权由应用程序本身强制执行。

    您能否确认您正在寻找使用内部部署的Active Directory或Azure Active Directory(云服务)登录的用户?Azure Active Directory谢谢,这确实有助于澄清问题,我能够从MS github repo中获得示例代码。