身份认证 SDK
更新时间:2018-09-28 10:27:55
概述
提供基于 iotToken 的用户身份认证方案,通过和账号及用户 SDK、API 通道 SDK 的集成,完成用户身份凭证的生成和管理,以及发起 API 请求的用户身份的鉴权
依赖 SDK | 概述 |
---|---|
API 通道 | 提供 API 通道能力 |
初始化
身份认证 SDK 的初始化依赖 API 通道以及账号和用户SDK的初始化,请参见:API 通道SDK - 初始化; 账号和用户 SDK初始化
SDK(com.aliyun.iot.aep.sdk:iot-credential)版本小于0.0.1.7,请使用如下方式初始化
//其中loginAdapter为OLoginAdapter,务必注意在调用之前,保证loginAdapter已经完成初始化(即完成了用户和账号SDK的初始化)
IoTCredentialManageImpl.init(loginAdapter, appkey);
SDK(com.aliyun.iot.aep.sdk:iot-credential)版本为0.0.1.7以及以上,请使用如下方式初始化
//务必注意在调用之前,保证完成了用户和账号SDK的初始化
IoTCredentialManageImpl.init(appKey);
使用方式
当使用 API 通道 执行某些需要IoT身份鉴权的业务请求时,统一身份认证 SDK 为 API 通道提供了一个自动完成请求认证信息填充的模块 IoTCredentialProviderImpl,使用方式如下:
初始化IoTCredentialHook模块代码如下:
IoTAuthProvider provider = new IoTCredentialProviderImpl(IoTCredentialManageImpl.getInstance(app)); IoTAPIClientImpl.getInstance().registerIoTAuthProvider("iotAuth", provider);
构建需要鉴权的业务请求 IoTRequest
构建 IoTRequest 时需要增加 AuthType 参数(参数填写注册 IoTCredentialHook 时,注册的 key,本例为“iotAuth”) ,代码如下所示:
IoTRequest request = new IoTRequestBuilder()
.setPath("path")
.setApiVersion("1.0.4")
.addParam("request", paramMap)
.setAuthType("iotAuth")
.build();
在 API 通道内部会触发 IoTCredentialProviderImpl ,自动刷新并填充认证信息,完成正常的业务请求。
- 处理认证失败
目前服务端逻辑不支持同一个账号多端登录,如果一个账号在多个设备登录,那么只有最后一个登录的账号才可以正常访问IoT服务,其他账号则会返回认证错误,SDK提供一个接口,可以方便开发者随时监听这个错误,接口如下:
IoTCredentialManageImpl.getInstance(app).setIotCredentialListenerList(IoTTokenInvalidListener listener)
其中IoTTokenInvalidListener定义如下:
public interface IoTTokenInvalidListener {
void onIoTTokenInvalid();
}