【发布时间】:2021-03-10 17:51:57
【问题描述】:
我正在创建一个任务,它将使用 Microsoft Azure Active Directory 检索 Outlook 邮件中的消息。
我设置了我的 Azure 帐户。注册一个应用程序,添加证书,然后将用户添加到我的 AD。我的登录方法返回一个访问令牌,这意味着登录成功,并将访问令牌传递给 Outlook 消息 API。但 Outlook 消息 API 返回 unauthorize。
这是我的范围:电子邮件 Group.Read.All Mail.Read Mail.Read.Shared Mail.ReadBasic openid profile User.Read User.ReadBasic.All Mail.ReadWrite
我使用 Laravel HTTP 客户端发送请求。希望任何人都可以帮助我,我在这个问题上坚持了一周
public function __construct()
{
$this->params = [
'client_id' => env('OAUTH_APP_ID'),
'scope' => env('OAUTH_SCOPES'),
'client_secret' => env('OAUTH_APP_PASSWORD'),
'username' => 'xxxxxxxx@mytenant.onmicrosoft.com',
'password' => 'xxxxxxxx',
'grant_type' => 'password',
'redirectUri' => env('OAUTH_REDIRECT_URI'),
'urlAuthorize' => env('OAUTH_AUTHORITY').env('OAUTH_AUTHORIZE_ENDPOINT'),
'urlAccessToken' => env('OAUTH_AUTHORITY').env('OAUTH_TOKEN_ENDPOINT'),
'urlResourceOwnerDetails' => '',
];
}
public function signin()
{
$url = 'https://login.microsoftonline.com/organizations/oauth2/v2.0/token';
$response = Http::asForm()->post($url, $this->params);
if($response->ok()){
$returnData = $response->json();
$mail_api = 'https://outlook.office.com/api/v2.0/me/messages';
$messagesResponse = Http::withToken($returnData['access_token'])->get($mail_api);
dd($messagesResponse);
}
}
这是我的登录回复。我使用 Laravel HTTP 客户端发送请求。
【问题讨论】:
-
“Active Directory”和“Azure Active Directory”完全不相关——它们共享一个名称的事实让每个人都感到困惑。我正在编辑您的问题以消除歧义。
-
您需要编辑您的屏幕截图以不显示您的不记名令牌。这是敏感信息。
-
感谢@Dai 的反馈和澄清。我指的是 Azure Active Directory
-
OAUTH_SCOPES使用什么值? -
@Dai 我更新了我的帖子以获取范围和权限
标签: laravel azure azure-active-directory azure-web-app-service msal