Azure AD与自有PHP平台集成 无应用/SSO校验用户密码实现咨询
Azure AD PHP密码校验问题解答
1. 能否不注册应用、不使用SSO实现密码校验?
完全不可行。所有与Azure AD身份体系交互的操作都受微软的身份安全机制约束,必须先在Azure AD后台注册应用、完成权限配置后才能调用对应接口,不存在跳过应用注册的直连密码比对能力。
2. 是否存在类似LDAP的实现方式?
有适配方案:
- 你可以部署Azure AD Domain Services(AD DS),开启安全LDAP访问权限后,就可以直接使用PHP原生的LDAP扩展完成密码校验,和本地LDAP服务的使用逻辑完全一致
- 核心校验逻辑示例:
// 连接已配置好的Azure AD DS安全LDAP地址 $ldapConn = ldap_connect('ldaps://your-aadds-domain.com', 636); // 配置LDAP参数 ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0); // 尝试绑定,绑定成功即密码校验通过 $verifyResult = @ldap_bind($ldapConn, 'user@your-domain.com', $_POST['password']); if ($verifyResult) { echo '密码校验通过'; } else { echo '密码错误'; }
- 注意该方案仍需要你先在Azure后台完成Azure AD DS的部署、安全LDAP的启用和网络策略配置,不能跳过基础配置环节。
3. 关于Pass-through Authentication(直通身份验证)的说明
直通身份验证是微软为混合部署场景(本地AD与Azure AD同步)提供的内置身份校验能力,仅作用于Azure AD自身的登录流,没有对外暴露可被第三方自定义代码调用的接口,因此你无法直接调用该能力实现自定义表单的密码校验。
补充建议
如果你的业务场景允许,优先选择OAuth2.0/OIDC标准SSO流实现登录,不需要你侧采集和传输用户明文密码,安全性更高。如果必须自定义表单采集校验,除了上述LDAP方案外,也可以注册应用后使用Azure AD的资源所有者密码凭据流,请求对应租户的token端点,能成功返回有效访问token即代表密码校验通过。
内容的提问来源于stack exchange,提问作者Kriss McCone
相关产品推荐
相关产品推荐

