Я работаю в очень крупной компании с 5000+ сотрудниками.Из-за этого у нас есть лицензии на Azure, и все электронные письма и серверы работают на их платформе.Я создал приложение для нашего внутреннего бизнеса (интранет).Это приложение использует единый вход для входа в систему наших пользователей и блокировки внешних пользователей, которых нет в нашем клиенте.Правление пришло ко мне с вопросом, можем ли мы использовать одну глобальную учетную запись электронной почты для управления всеми событиями и объявлениями компании через календарь.Я искал какое-то время (3 недели) и не смог найти ничего, что связано с тем, что я собираюсь сделать (в PHP).
Мне нужно соединение с графиком Microsoft через php, который автоматически регистрирует 'статически задан адрес электронной почты и выплевывает все события календаря между 2 датами.На графике Microsoft API есть множество предварительных версий этого, но все они написаны для «общедоступных» адресов электронной почты, а не для более безопасных адресов Azure.
У меня установлено соединение с токеном Bearer, но срок возврата для него истекпо умолчанию.
Что у меня есть:
$tenantAppUrl = "https://login.microsoftonline.com/“.$tenantid;
$tenantHostUrl = "login.microsoftonline.com”;
$requesturl = "https://login.microsoftonline.com/“.$tenantid."/oauth2/token?api-version=1.6”;
$post_params = array(
"client_id" => $clientid,
"client_secret" => $clientsecret,
"resource" => "https://graph.windows.net/",
"grant_type" => "client_credentials"
);
$headers = array(
"POST: " . $tenantAppUrl . " HTTP/1.1",
"Content-Type: application/x-www-form-urlencoded",
"Host: " . $tenantHostUrl,
"cache-control: no-cache",
'Content-Length: ' . strlen(json_encode($post_params))
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $fullurl);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION,true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_params);
$response = json_decode(curl_exec($curl), false);
curl_close($curl);
Вышеприведенное возвращает токен на предъявителя, срок действия которого истек 2 часа назад.
HTTP/1.1 100 Continue HTTP/1.1 200 OK Cache-Control: no-cache, no-store Pragma: no-cache Content-Type: application/json; charset=utf-8 Expires: -1 Strict-Transport-Security: max-age=31536000; includeSubDomains X-Content-Type-Options: nosniff x-ms-request-id: 2f26979b-c336-44a3-a9c9-d4d785758c00 P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" Set-Cookie: fpc=AsIZpMH6undMozQVDrbmPxTWEVd_AQAAAEeKP9QOAAAA; expires=Fri, 10-May-2019 06:55:04 GMT; path=/; secure; HttpOnly Set-Cookie: x-ms-gateway-slice=prod; path=/; secure; HttpOnly Set-Cookie: stsservicecookie=ests; path=/; secure; HttpOnly Date: Wed, 10 Apr 2019 06:55:03 GMT Content-Length: 1448
{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1554882904","not_before":"1554879004","resource":"https://graph.windows.net/","access_token”:”<thetoken>"}
Я ожидаю, что предъявительтокен, который должен быть действителен не менее 2 часов, но срок его действия истек 2 часа назад вместо этого.
Почему истек срок действия этого токена и как я могу использовать протокол «renew» / «JWT» в php для расширениясрок его использования до 1 месяца и более?
Имейте в виду, что эта учетная запись никем не будет авторизована.Это должно произойти автоматически.(учетные данные были (надежно) сохранены в среде администратора интрасети).
И как получить все события календаря между двумя датами для учетных записей Azure?URL-адрес ниже также описан для «общедоступных адресов электронной почты.
https://docs.microsoft.com/en-us/graph/api/calendar-list-calendarview?view=graph-rest-1.0