如何实现自定义AWSCredentialsProvider

时间:2014-12-10 13:17:14

标签: ios amazon-web-services token aws-sdk

我从服务器生成凭证以及Token.I使用AWSStaticCredentialsProvider,而我需要传递令牌以进行身份​​验证。

提到了许多链接,但除了自定义实现凭证Provider的想法之外没有其他帮助。任何代码都会有所帮助。

参见: [AWSWebIdentityCredentialsProvider How to get parameters values?

2 个答案:

答案 0 :(得分:4)

1.创建一个继承自NSObject的新类;
2.确保它实现了AWSCredentialsProvider;
3.Declare所需的属性,如Access,Secret和Token以及初始化方法;
然后在实现文件中实现声明的方法。

代码段:

.h文件

@interface CustomCredentialsProvider : NSObject<AWSCredentialsProvider>
@property (nonatomic, readonly) NSString *accessKey;
@property (nonatomic, readonly) NSString *secretKey;
@property (nonatomic, readonly) NSString *sessionKey;

+ (instancetype)credentialsWithAccessKey:(NSString *)accessKey
                               secretKey:(NSString *)secretKey sessionKey:(NSString*)sessionKey;
- (instancetype)initWithAccessKey:(NSString *)accessKey
                        secretKey:(NSString *)secretKey sessionKey:(NSString*)sessionKey;
@end

.m文件

+ (instancetype)credentialsWithAccessKey:(NSString *)accessKey
                               secretKey:(NSString *)secretKey sessionKey:(NSString*)sessionKey
{
    CustomCredentialsProvider *credentials = [[CustomCredentialsProvider alloc]initWithAccessKey:accessKey secretKey:secretKey sessionKey:sessionKey];
    return credentials;

}

- (instancetype)initWithAccessKey:(NSString *)accessKey
                        secretKey:(NSString *)secretKey sessionKey:(NSString*)sessionKey
{
    if (self = [super init]) {
        _accessKey = accessKey;
        _secretKey = secretKey;
        _sessionKey = sessionKey;
    }
    return self;
}

答案 1 :(得分:1)

请记住临时凭证到期。完成后,所有后续请求都会因您实施凭证提供程序而失败。凭据提供程序需要能够响应- refresh并在凭据过期时刷新凭据。 - refresh的实施完全取决于您的后端服务结构和要求。

您应该查看AWSWebIdentityCredentialsProviderAWSCognitoCredentialsProvider的实现作为示例。另外,请考虑使用AWSCognitoCredentialsProvider,因为这是向客户端应用提供凭据的更简单方法。