STS鉴权模式
介绍
MNS可以通过阿里云STS服务,临时进行授权访问。阿里云STS (Security Token Service) 是为云计算用户提供临时访问令牌的Web服务。通过STS,您可以为第三方应用或联邦用户(用户身份由您自己管理)颁发一个自定义时效和权限的访问凭证,App端称为FederationToken。第三方应用或联邦用户可以使用该访问凭证直接调用阿里云产品API,或者使用阿里云产品提供的SDK来访问云产品API。
- 您不需要透露您的长期密钥(AccessKey)给第三方应用,只需要生成一个访问令牌并将令牌交给第三方应用即可。这个令牌的访问权限及有效期限都可以由您自定义。
- 您不需要关心权限撤销问题,访问令牌过期后就自动失效。
以APP应用为例,交互流程如下图:
方案的详细描述如下:
- App用户登录。App用户身份是客户自己管理。客户可以自定义身份管理系统,也可以使用外部Web账号或OpenID。对于每个有效的App用户来说,AppServer可以确切地定义出每个App用户的最小访问权限。
- AppServer请求STS服务获取一个安全令牌(SecurityToken)。在调用STS之前,AppServer需要确定App用户的最小访问权限(用Policy语法描述)以及授权的过期时间。然后通过调用STS的AssumeRole(扮演角色)接口来获取安全令牌。角色管理与使用相关内容请参考《RAM使用指南》中的角色管理。
- STS返回给AppServer一个有效的访问凭证,App端称为FederationToken,包括一个安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)以及过期时间。
- AppServer将FederationToken返回给ClientApp。ClientApp可以缓存这个凭证。当凭证失效时,ClientApp需要向AppServer申请新的有效访问凭证。比如,访问凭证有效期为1小时,那么ClientApp可以每30分钟向AppServer请求更新访问凭证。
- ClientApp使用本地缓存的FederationToken去请求Aliyun Service API。云服务会感知STS访问凭证,并会依赖STS服务来验证访问凭证,并正确响应用户请求。
STS安全令牌详情,请参考《RAM使用指南》中的
角色管理。关键是调用STS服务接口
AssumeRole来获取有效访问凭证即可。也可以直接使用STS SDK来调用该方法,
点击查看
使用这种模式授权需要先开通阿里云RAM服务:
RAM
STS使用手册:
https://docs.aliyun.com/#/pub/ram/sts-sdk/sts_java_sdk&preface
MNS授权策略配置:
点击查看
直接设置StsToken
您可以在APP中,预先通过某种方式(如通过网络请求从您的业务Server上)获取一对StsToken,然后用它来初始化SDK。采取这种使用方式,您需要格外关注StsToken的过期时间,在StsToken即将过期时,需要您主动更新新的StsToken到SDK中。
初始化代码为: