如何验证AZURE MFA发送的SMS代码并允许访问我的应用程序

时间:2019-02-21 18:33:24

标签: laravel azure api access-token multi-factor-authentication

对不起,我的英语不好

这是必须使用AZURE多因素身份验证服务对一组用户进行身份验证的问题,我的应用程序位于我的域中,而不是在蔚蓝的实例中,我在laravel中开发了我的应用程序,该应用程序通过curl与API通信如果用户具有注册多因素身份验证,则位于同一服务器上,这将完成所有流程以对用户进行身份验证,然后我使用JavaScript打开了一个新窗口,该窗口显示用户必须登录此门户网站的https://login.microsoft.com,并且然后Microsoft向我发送短信或使用代码致电,我必须将此代码放在新窗口中并验证来自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 个答案:

没有答案