Я создаю веб-приложение с аутентификацией OAUTH для Azure AD. Я имею в виду, что вы входите в мое приложение через свою учетную запись Azure AD/Office365. После успешного входа в систему я сопоставляю GUID пользователя Azure AD с пользователем в моей базе данных Mysql. Я установил в информации о сеансе, что пользователь зарегистрирован.
Я использовал это руководство для основ: https://kvaes.wordpress.com/2016/10/21/azure-using-php-to-go-all-oauth2-on-the-management-api/< /а>
Основы кода, который я использую для регистрации пользователя в моем PHP-приложении:
//User is not logged in, try to log in
$provider = new TheNetworg\OAuth2\Client\Provider\Azure([
'clientId' => getsetting('aadsso_clientid'),
'clientSecret' => getsetting('aadsso_secret'),
'redirectUri' => getsetting('aadsso_redirecturl')
]);
if (!isset($_GET['code'])) {
// If we don't have an authorization code then get one
$authUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();
header('Location: '.$authUrl);
exit;
// Check given state against previously stored one to mitigate CSRF attack
} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {
unset($_SESSION['oauth2state']);
exit('Invalid state');
} else {
try {
// Try to get an access token (using the authorization code grant)
$token = $provider->getAccessToken('authorization_code', [
'code' => $_GET['code'],
'resource' => 'https://graph.windows.net',
]);
} catch (Exception $e) {
exit ("Connection error. Contact the administrator");
}
// Optional: Now you have a token you can look up a users profile data
try {
// We got an access token, let's now get the user's details (AAD login succeeded)
$me = $provider->get("me", $token);
//Some code here LEFT OUT, to find the user in my MySQL database.
$_SESSION['loggedin'] = 1;
$_SESSION['aadguid'] = $me['objectId'];
} catch (Exception $e) {
// Failed to get user details
exit ("Connection error. Contact the administrator");
}
}
Это прекрасно работает! Но когда я устанавливаю «$_SESSION['loggedin'] = 1;», пользователь входит в приложение.
Я действительно хочу понять, как заставить пользователя выйти из моего приложения, когда он выходит из своего сеанса Azure AD/Office365. Например, он входит в мое приложение, заходит на сайт outlook.office.com, там нажимает выйти. Когда он вернется в мое приложение и попытается загрузить страницу, мое приложение должно «увидеть», что он вышел из Azure AD.
Как это сделать, не теряя при этом производительности моего приложения?
Я совсем новичок в этом, но, пожалуйста, дайте мне несколько советов.