场景简介
服务隐身(SPA)能提高访问安全性,较多用户会选择在控制台启用此功能,启用此功能后需要按照文档说明设置SPA种子后,才能进行认证请求。如有需要请参考MainApp的SpaAuthViewController
前置步骤
在实际集成之前,我们要确保已经进行过开发准备
流程图
集成步骤
1、实现主认证
参考典型场景用户名密码认证
2、获取SPA种子
开启服务隐身(SPA)后,接入地址需要通过SPA种子来获取,SPA种子当前分两种类型:一种是“共享模式”,即所有用户共用一个SPA种子,另一种是一人一码,即每一个用户拥有不同的SPA种子,具体使用哪种类型取决于服务端的配置, 详情参考常见咨询问题
3、设置SPA种子
注意:设置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种子的错误类型参考
获取SPA种子设置状态
如果要主动判断某个服务端地址有没有成功设置spa种子,可以调用isSpaSeedExist接口。
示例代码如下:
NSString *url= @"https://10.242.4.232";
BOOL exist = [[SFUemSDK sharedInstance] isSpaSeedExist:url];