Как проверить код SMS, отправленный AZURE MFA, и разрешить доступ к моему заявлению

Сначала извините за мой плохой английский

Это проблема, которая необходима для аутентификации группы пользователей с помощью службы многофакторной аутентификации AZURE, мое приложение находится в моем домене, а не в Azure. Ну, у меня есть приложение, разработанное в laravel. Это приложение взаимодействует с curl с API, расположенным в тот же сервер, который выполняет весь поток для аутентификации пользователя, если у пользователя есть многофакторная аутентификация регистрации, тогда у меня открылось новое окно с JavaScript, в этом окне отображается https://login.microsoft.com/ пользователь должен авторизовать на этом портале. и затем Microsoft отправляет мне SMS или звонит с кодом, я должен поместить этот код в новом окне и подтвердить ответ от Microsoft, если код действителен, я разрешаю пользователю доступ к моему приложению на моем сервере, если не откажусь код и пользователь должны повторить попытку аутентификации.

В этой строке => elseif(strpos($resultado, 'AADSTS70076')!== false) я ловлю, если у пользователя есть многофакторная аутентификация регистрации

Это часть кода API:

$app->post('/valid_login', function() use ($app){


//Validaciónes de Azure

try {                        
    $token = $app->azure->getAccessToken('password', [
            'username' => $data['usuario'],
            'password' => $data['cadena']
    ]);
    try {
            $me = $app->azure->get("me", $token);
            if ($me['accountEnabled'] == 1) {
                    $result['status'] = 1;
                    $result['mensaje'] = 'Acceso Valido';
                    $result['displayName'] = $me['displayName'];
                    $result['givenName'] = $me['givenName'];
                    $result['city'] = $me['city'];
                    $result['companyName'] = $me['companyName'];
                    $result['employeeId'] = $me['employeeId'];
            } else {
                    $result['status'] = 2;
                    $result['mensaje'] = '<center>Acceso Deshabilitado</center>';
            }
            echo json_encode_utf8($result);
    } catch (Exception $e) {
            $result['status'] = 0;
            $result['mensaje'] = '<center>Error al obtener el Perfil</center>';
            $result['error'] = $e;
            echo json_encode_utf8($result);
    }
} catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) {
        $resultado = $e->getTrace()['0']['args']['1']['error_description'];
        $result['mensaje'] = $e->getMessage();
        if (strpos($resultado,'AADSTS65001') !== false) {
                $result['mensaje'] = 'Usuario Pendiente por Autorizar';
                $result['error'] = '<center>Usuario Pendiente por Autorizar</center>';
        } elseif (strpos($resultado, 'AADSTS50034') !== false) {
                $result['mensaje'] = 'El Usuario no Existe';
                $result['error'] = '<center>El Usuario no Existe</center>';
        } elseif (strpos($resultado, 'AADSTS70002') !== false) {
                $result['mensaje'] = 'Usuario o Password Incorrecto';
                $result['error'] = '<center>Usuario o Password Incorrecto</center>';
        } elseif(strpos($resultado, 'AADSTS70076') !== false){
                $result['link'] = "https://login.microsoft.com";
                $result['status'] = 4;
                echo json_encode_utf8($result);
                exit;
            }
        } else {
                $result['mensaje'] = 'Error de acceso con Azure('.$resultado.')';
                $result['error'] = '<center>Error de acceso con Azure</center>'
                . '('. $resultado.')';
        }
        $result['status'] = 0;
        $result['errorfull'] = $e->getTrace()['0']['args']['1']['error_description'];
        echo json_encode_utf8($result);
}   

});

0 ответов

Другие вопросы по тегам