员工身份(EIAM)

动态口令OTP认证

# 文档说明

本文为您介绍Android客户端如何接入OTP认证功能。OTP功能,即在用户中心激活后,可在手机APP或小程序上获取动态口令,保证账号安全。 OTP使用场景下,用户登录进用户中心,进入账号设置,账号安全,动态口令设置,按照页面提示激活动态口令,在下一次登录需要OTP二次认证的地方,使用APP或小程序输入动态口令可完成认证。

# 流程说明

集成流程说明

  1. App客户端构建完成扫一扫页面功能,扫得到的字符串,带入IDaaS SDK添加,添加成功返回到OTP列表。

  2. App客户端构建完成OTP口令列表,使用IDaaS SDK获取目前已添加的OTP口令列表。

  3. App客户端在OTP列表中,每30秒或1分钟到IDaaS SDK查询目前单个OTP的动态口令码,继而刷新列表中单个otp口令。

  4. App客户端在OTP列表中,构建删除单个OTP口令的动画效果,在响应事件中调用IDaaS SDK删除OTP单个口令的方法,并刷新UI。

# 准备工作

  1. 登录IDaaS企业中心平台,点击 “设置-->服务配置-->动态口令配置” ,配置口令加密算法,位数和时间间隔。目前SDK支持的算法是HMACSHA1,HMACSHA256H,MACSHA512。

  2. 配置完成后点击 “资源-->应用”,找到企业应用并进入应用面板,开启 “访问控制” 开关,在弹出的设置页面,选择二次认证,勾选二次认证方式为OTP。

# 引入依赖包

AuthnCenter_Common-1.5.3.aar //Common 包
AuthnCenter_MFA_OTP-1.5.3.aar //短信登录 sdk
1
2

将aar包导入lib,如下图所示:

# 配置build.gradle

implementation 'AuthnCenter_MFA_OTP:1.5.3'                
implementation 'com.google.zxing:core:3.5.1'
implementation 'com.google.code.gson:gson:2.10'
implementation 'com.squareup.picasso:picasso:2.8'
implementation 'io.fotoapparat.fotoapparat:library:1.4.1'
1
2
3
4
5

# 配置AndroidManifest

  <!--权限-->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
1
2
3
4
5
6
7

# 开发集成

# SDK初始化

AuthnCenterSDK.Builder()
                .init(this)
                .setBaseUrl("https://xxx.xxx.com")      //租户域名
                .setClientId("xxxx") //租户后台应用client-id
                .isCheckSSL(false) //是否检测SSL证书
                .logEnable(false).build(); //是否打开http请求log   建议上线之后关闭
1
2
3
4
5
6

# 接口调用说明

生成随机码

        TokenPersistence tp = new TokenPersistence(this.getContext());
        Token token = tp.get(position);
        TokenCode codes = token.generateCodes();
        new TokenPersistence(this.getContext()).save(token);
        codes.getCurrentCode();//得到code
1
2
3
4
5