场景简介

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

前置步骤

在实际集成之前,我们要确保已经进行过开发准备

流程图

流程图

集成步骤

1、实现主认证

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

2、获取SPA种子

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

3、设置SPA种子

setSpaConfig接口详情

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

共享模式

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

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

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

示例代码如下:

NSString* spaConfig = @"扫描的二维码内容";
[[SFUemSDK sharedInstance] setSPAConfig:spaConfig complete:^(NSString * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            //表示设置成功
        }
    }];

一人一码模式

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

fc14116030915409

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

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

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

示例代码如下:

NSString *config = @"{\"loginAddress\":\"https://10.242.4.232\", \"spaSecret\":\"fc14116030915409\"}"
[[SFUemSDK sharedInstance] setSPAConfig:spaConfig complete:^(NSString * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            //表示设置成功
        }
    }];

清除SPA种子

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

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

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

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

示例代码如下:

//设置spaSecret的值为空
NSString *config = @"{\"loginAddress\":\"https://10.242.4.232\", \"spaSecret\":\"\"}"
[[SFUemSDK sharedInstance] setSPAConfig:spaConfig complete:^(NSString * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            //表示设置成功
        }
    }];

注意:

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

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

setSpaConfig接口详情

获取SPA种子设置状态

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

isSpaSeedExist接口详情

示例代码如下:

NSString *url= @"https://10.242.4.232";
BOOL exist = [[SFUemSDK sharedInstance] isSpaSeedExist:url];

results matching ""

    No results matching ""