5

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

引用了许多链接,但除了自定义实现凭据提供程序的想法之外没有其他帮助。任何代码都会有所帮助。

参考:[ AWSWebIdentityCredentialsProvider 如何获取参数值?

4

2 回答 2

4

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

代码片段:

.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;
}
于 2014-12-10T15:14:02.200 回答
1

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

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

于 2014-12-10T20:40:55.007 回答