场景简介

除了短信验证码辅助认证外,管理员还可以配置辅助认证方式未TOTP令牌/Radius认证。和短信辅助认证相比,整体认证流程是一致的。

前置步骤

1.在实际集成之前,我们要确保已经进行过开发准备,选择了对应的集成方式

2.在aTurst控制台创建测试用户,并配置好用户名密码认证+TOTP令牌/Radius辅助认证,参考产品手册

3.使用对应的Demo程序验证可以正常使用

流程图

用户名密码+TOTP或radius辅助认证.png

集成步骤

1.用户名密码主认证

参考典型场景用户名密码认证

2.处理二次认证-TOTP令牌或Radius认证

如果您的服务器设置了Radius或TOTP令牌的增强认证方式,在完成用户密码认证后,服务端认证结果会要求进行二次认证,其中Raiuds认证对应nextAuth == atrust_auth_type::ATRUST_AUTH_TYPE_RADIUS TOTP认证对应nextAuth == atrust_auth_type::ATRUST_AUTH_TYPE_TOTP

TOTP辅助认证接口详情

Radius辅助认证接口详情

示例代码(TOTP辅助认证)

atrust_auth_type nextAuth;
void *data;
atrust_error_code ec = atrust_sync_login_by_totp(m_totp, &nextAuth, &data);
switch (ec) {
// 成功
case atrust_error_code::OK:
    // TOTP令牌认证成功!
    break;
case atrust_error_code::PASSPORT_FAILED:
    // 认证失败,可能是TOTP过期或错误。
    return;
case atrust_error_code::AUTH_PARAM_EMPTY:
    // 输入的参数为空!
    return;
case atrust_error_code::OUT_PARAM_WRITE_ERROR:
    // 出参无法写入!
    return;
case atrust_error_code::SDPC_UNINITIALIZED:
    // 未调用初始化接口!
    return;
case atrust_error_code::ATRUST_CONNECT_ERROR:
    // aTrust客户端连接失败!如果重试任然失败,请检查aTrust客户端是否正确安装并运行。
    return;
case atrust_error_code::NO_PHONE_NUMBER_FOR_SMS_AUTH:
    // 设置了短信认证,但没有配置有效的号码。
    return;
case atrust_error_code::BAD_ALLOC_ERROR:
    // 内存分配失败。
    return;
case atrust_error_code::UNSOPPORTED_NEXT_AUTH_TYPE:
    // 服务端设置了不支持的增强认证方式。
    return;
// 未知的业务执行过程失败
default:
    // 接口调用失败!请在atrust_code.h中检查错误码,或尝试重试。错误码:ec
    return;
}

switch (nextAuth) {
case atrust_auth_type::ATRUST_AUTH_TYPE_OK:
    // 登录成功!
    break;
//一般不会出现双重辅助认证的情况
case atrust_auth_type::ATRUST_AUTH_TYPE_SMS: {
    // TOTP令牌认证成功!下一步辅助认证:短信验证码
    atrust_auth_sms_phone_number_data *phoneData = static_cast<atrust_auth_sms_phone_number_data *>(data);
    if (phoneData != NULL) {
        // 用户手机号:phoneData->phone_number;
    }
    break;
}
case atrust_auth_type::ATRUST_AUTH_TYPE_RADIUS:
    // TOTP令牌认证成功!下一步辅助认证:Radius认证
    break;
default:
    // TOTP令牌认证成功,但服务器返回了不支持的辅助认证类型
}

// 释放内存
atrust_free(data);
data = nullptr;

注意:

  1. Radius作为辅助认证时和TOTP认证接口几乎相同,示例代码仅写TOTP令牌认证,Radius认证不做重复说明,注意区分接口名称。

3.1 认证成功

当认证接口atrust_sync_login_by_totp返回结果为atrust_error_code::OK时表示本次认证操作已经成功。一般情况下辅助认证成功之后表示已经完成登录操作,登录之后aTrust客户端后台服务进程会从控制器上获取应用策略启动隧道服务,此时还不能立即访问隧道资源,需要等待隧道启动成功。

3.2 认证失败

当认证接口atrust_sync_login_by_totp返回结果不为atrust_error_code::OK时表示认证不成功,需要根据不同的错误码进行不同的操作,详情可参考demo程序或错误码说明。

3.3 处理下一次认证

当认证接口atrust_sync_login_by_totp返回结果为atrust_error_code::OK,但是nextAuth的结果不为atrust_auth_type::ATRUST_AUTH_TYPE_OK时,说明管理员还开启了其它增强认证,需要进一步处理下一次认证。(一般不会出现双重辅助认证的情况)

深信服科技 all right reserved,powered by Gitbook本文档更新于: 2024-07-25 14:08

results matching ""

    No results matching ""