【问题标题】:PHP: 500 Server Error - Request for access token for Microsoft Azure Active Directory AccessPHP:500 服务器错误 - 请求 Microsoft Azure Active Directory 访问的访问令牌
【发布时间】:2017-06-02 14:00:43
【问题描述】:

我正在关注此文档:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code

我刚刚完成了这一步(只需访问下面的 URL):

https://login.microsoftonline.com/{tenant}/oauth2/authorize?client_id={client_id}&response_type=code

这将我重定向到附加了代码查询字符串的重定向 URL:

https://example.com/?code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCm.................................

在上述code 查询字符串的末尾,有一个额外的session_state 参数。

此问题顶部链接中概述的下一步是发出POST 请求,但我无法建立此呼叫。

以下是文档所代表的示例:

如何在 PHP 中形成和调用这个请求(不使用cURL)?

这是我的尝试,但我不知道我是否正确:

$url = 'https://login.microsoftonline.com/{tenant}/oath2/token';

$data = array( 'grant_type' => 'authorization_code',
               'client_id' => '2d4d11a2-f814-46a7-890a-274a72a7309e',
               'code' => 'AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCm...................',
               'redirect_uri' => 'https://example.com',
               'resource' => 'https://graph.microsoft.com',
               'client_secret' => '{client_secret}' );

$options = array(
    'http' => array(
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'method' => 'POST',
        'content' => http_build_query($data)
    )
);

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);

$var_dump($result);

更新:上面的代码(执行时)返回一个500 Internal Server Error

另外,我不知道是否应该将session_state(如上所述)添加到POST 调用中。

【问题讨论】:

    标签: php azure post active-directory


    【解决方案1】:

    网址应该是https://login.microsoftonline.com/{tenant}/oauth2/token

    您必须将客户端密码以及资源添加到请求中。

    例如,如果您尝试调用 Microsoft Graph,则资源应为 https://graph.microsoft.com

    【讨论】:

    • 我在哪里可以获得client_secret
    • 在 Azure AD 中注册应用后,应该有一个 Keys 按钮。在那里创建一个,那些是客户机密。它本质上是您的应用用来向 AAD 证明其身份的密码。
    • 我更新了代码,但是当我尝试发出请求时,它返回了一个500 错误。
    • 嗯,很难说为什么会这样。 Azure AD 的响应中有任何内容吗?
    • 我看到的唯一与响应标头有关的是Cache-Control: private, must-revalidate。否则,我在哪里可以查看有关 AD 的更多详细信息错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2020-12-10
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多