场景简介

服务隐身(SPA)能提高访问安全性,较多用户会选择在控制台启用此功能,启用此功能后需要按照文档说明设置SPA种子后,才能进行认证请求。

前置步骤

  1. 在实际集成之前,我们要确保已经进行过开发准备
  2. 在控制台创建测试用户,并配置好用户名密码认证和启用SPA开关,参考产品手册

流程图

流程图

集成步骤

1、实现主认证

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

2、获取SPA安全码

开启服务隐身(SPA)后,接入地址需要通过SPA种子来获取,SPA种子当前分两种类型:一种是“共享模式”,即所有用户共用一个SPA安全码,另一种是一人一码,即每一个用户拥有不同的SPA安全码,具体使用哪种类型取决于服务端的配置, 详情参考常见咨询问题

3、设置SPA安全码

一人一码模式

当前模式下,服务端提供的是一个类似如下格式的数据

j7vU-uv2V-GrJu

此场景需要将服务端获取到的种子和服务端地址,按照如下格式拼接成json数据,再调用setSpaConfig接口将处理后的json数据传递给sdk

注意:以下数据仅为示例,实际需要使用对应的服务端地址和spa种子

{"loginAddress":"https://10.242.4.236", "spaSecret":"j7vU-uv2V-GrJu"}

示例代码如下:

String config = "{\"loginAddress\":\"https://10.242.4.232\", \"spaSecret\":\"j7vU-uv2V-GrJu\"}"
SFUemSDK.setSpaConfig(config, new SFSetSpaConfigListener() {
    @Override
    public void onSetSpaConfig(String result, SFBaseMessage error) {
        SFLogN.info(TAG, "spa result:"+ result + ", error:" + error);

    }
});

setSpaConfig接口详情

注意:设置SPA种子需要在调用认证接口前,否则无法和服务端建立连接

共享模式

当前模式下,有以下两种方式使用SPA安全码:

方式一

服务端提供的是一张二维码图片,扫描二维码会得到如下格式的数据

{"model":1,"data":"94c124853563f0467d99f67776d017e831127f1fb24221e8c79f581da97656648678f1baca84e2baaf0a8f3ca6c8c1fdbd75eac204e107f4f7f8fca76c7d144758faed679409dd711b32b7009e8dfc1ef835c262ddfdb329d5d9ed30ffdd846971859c597facecdd188cafff4e0cf2d2cc5a917b60ca696db8e67637c88c57148a6ad6bc097f97db12ad5cb324e29520e55fe8fd0f2caded4dba7eaf0ca7a6ef6598e3d7f9d771ea812f0bdd12777dcee4f19818a5482290bbe0313e6590fc676935109eadc1c623e36b09a36773891d8630de2638756b61523bf9477f85a031998e498bc1637917"}

此场景直接调用setSpaConfig接口将二维码扫描得到的json数据传递给sdk

示例代码如下:

String config = "二维码内容"
SFUemSDK.setSpaConfig(config, new SFSetSpaConfigListener() {
    @Override
    public void onSetSpaConfig(String result, SFBaseMessage error) {
        SFLogN.info(TAG, "spa result:"+ result + ", error:" + error);

    }
});
方式二

服务端提供的是一个类似如下格式的数据

fc14116030915409

此场景需要将服务端获取到的种子和服务端地址,按照如下格式拼接成json数据,再调用setSpaConfig接口将处理后的json数据传递给sdk

注意:以下数据仅为示例,实际需要使用对应的服务端地址和spa种子

{"loginAddress":"https://10.242.4.236", "spaSecret":"fc14116030915409"}

示例代码如下:

String config = "{\"loginAddress\":\"https://10.242.4.236\", \"spaSecret\":\"fc14116030915409\"}"
SFUemSDK.setSpaConfig(config, new SFSetSpaConfigListener() {
    @Override
    public void onSetSpaConfig(String result, SFBaseMessage error) {
        SFLogN.info(TAG, "spa result:"+ result + ", error:" + error);

    }
});

清除SPA种子

需要清除SPA种子也可以调用setSpaConfig接口将本地保存的SPA种子清除,共享码和一人一码两种场景都适用,具体操作如下:

此场景需要将服务端获取到服务端地址,按照如下格式拼接成json数据,再调用setSpaConfig接口将处理后的json数据传递给sdk,需要设置spaSecret的值为空(底层保存的逻辑是按照服务器地址保存的种子,所以需要地址作为key来删除种子)

注意:以下数据仅为示例,实际需要使用对应的服务端地址

{"loginAddress":"https://10.242.4.236", "spaSecret":""}

示例代码如下:

//设置spaSecret的值为空
String config = "{\"loginAddress\":\"https://10.242.4.236\", \"spaSecret\":\"\"}"
SFUemSDK.setSpaConfig(config, new SFSetSpaConfigListener() {
    @Override
    public void onSetSpaConfig(String result, SFBaseMessage error) {
        SFLogN.info(TAG, "spa result:"+ result + ", error:" + error);

    }
});

注意:

共享码模式下如果使用的是扫描二维码(方式一)的方式,需要集成方自己记录服务端的地址,用来填充json格式中的loginAddress,或者先扫码获取地址,然后清除(按照实际需求编写)

多接入地址使用场景

如果用户在服务端配置了多个接入地址, 并有使用多接入地址接入的需求, 可以在使用每个接入地址前, 都通过此接口为该地址设置一次SPA码, 里面的 loginAddress使用所需接入地址, 此时如果是共享模式也只能使用方式二, 因为二维码内容中也只会有一个地址, 无法实现多接入地址都进行接入的需求.

设置SPA种子的错误类型参考

setSpaConfig接口详情

获取SPA种子设置状态

如果要主动判断某个服务端地址有没有成功设置spa种子,可以调用isSpaSeedExist接口。

isSpaSeedExist接口详情

示例代码如下:

String url = "https://10.242.4.236";
//返回true表示存在,否则表示不存在
boolean isExist = SFUemSDK.isSpaSeedExist(url);

results matching ""

    No results matching ""