php - 从 PHP Web 应用程序根据 Azure Active Directory 对用户进行身份验证

标签 php azure amazon-web-services active-directory azure-active-directory

我有一个 PHP 网站,想要根据 Azure Active Directory 对用户进行身份验证。使用ldap_connect和bind,我可以毫无问题地对我们公司的本地AD服务器执行此操作。

function checkADAccount($username, $password)
{
    $adServer = "myADServer";
    $ldaprdn = 'myDomain' . "\\" . $username;

    $ldap = ldap_connect($adServer);

    ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

    $bind = @ldap_bind($ldap, $ldaprdn, $password);

    if ($bind) {
        @ldap_close($ldap); // Verbindung schließen
        return true;
    } else {
        return false;
    }
}

但是我的应用程序托管在 Amazon Web Services (AWS) 上,并且不在同一域中,因此我无法使用这种方式。 使用ldap_connect并将此功能绑定(bind)到我们公司的本地AD服务器。但我的应用程序托管在 Amazon Web Services (AWS) 上,并且不在同一域中,因此我无法使用这种方式。
我测试过graphapi使用 Azure 中我公司的 ClientId 和 key 。所以我可以读取用户数据,但我看不到任何检查用户/密码组合的可能性。我只想检查是否存在使用此密码的用户,我不需要从那里读取它。
所以我尝试通过更改 adServer 和用户的参数来修改上面的 LDAP 解决方案
$ldaprdn = 'sAMAccountname=' 。 $用户名 . ',cn=用户' 。 ',dc=myDomain,dc=com';

但我总是得到:“警告:ldap_bind():无法绑定(bind)到服务器:无法联系 LDAP 服务器”。我尝试了 adServer 的多个版本,但任何版本都提供了绑定(bind)。
您知道错误在哪里吗?我建议使用 ldap_connect 是错误的方式,特别是我不知道哪个服务器地址是正确的,以及我如何告诉 ClientId 和 key 。

最佳答案

目前,Azure AD 不支持 LDAP 连接。它提供OAuth2身份验证和授权。您可以引用Authentication Scenarios for Azure AD了解详细的 Azure AD 方案。

为了满足您对域中用户进行身份验证的要求,您可以利用此 code sample通过 Azure AD 实现身份验证。

或者,您可以关注Authorization Code Grant Flow构建您的自定义代码来验证您的用户。

如有任何进一步的疑问,请随时告诉我。

关于php - 从 PHP Web 应用程序根据 Azure Active Directory 对用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38186092/

相关文章:

amazon-web-services - 在 Terraform 中覆盖 STS API 端点时 SignatureDoesNotMatch

php - 在数据库中设置 utf8 - 我可以从 php 代码中删除 SET NAMES utf8

php - 如何使用 PHP 从 MySQL 查询中输出带有行跨度的表

azure - 使用 JWT 保护 WebAPI

algorithm - Amazon SQS 可见性超时是如何实现的?

amazon-web-services - AWS SQS : Which is the order of message in a FIFO queue after visibility-timeout expires?

php - 强制 phpmailer 发送空邮件

php - 如何从 PHP 执行 WKHTMLTOPDF?

azure - 逻辑应用程序 - Azure blob 存储 - 提取到存档文件夹操作 - RequestEntityTooLarge

Azure QueueClient 与 CloudQueue