2014-10-01 73 views
0

想使用下面的代码做认证,AWSWebIdentityCredentialsProvider如何获取参数值?

,但我无法得到的数值需要传递到下面的参数, providerId,roleArn,roleSessionName。

但是,我将从我们的本地服务器接收它的webIdentityToken值。

AWSWebIdentityCredentialsProvider *provideer = [AWSWebIdentityCredentialsProvider credentialsWithRegionType:AWSRegionUSEast1 providerId:@"" roleArn:@"" roleSessionName:"" webIdentityToken:@""]; 

问候, 铢

+1

你好,你可能想考虑使用[亚马逊Cognito](http://aws.amazon.com/cognito/)。它通过STS提供与Web联合身份验证相同的提供者支持。 – 2014-10-01 15:29:16

回答

1

我已创建自定义的凭据提供与亚马逊的认证机制完美的作品:)。 我遵循了与静态凭据提供者相同的步骤。

+0

你可以给我你代码示例吗?我正在尝试做同样的事情。我的老板坚持不使用cognito,所以我需要这样做。 – tyegah123 2016-01-13 06:59:15

+0

@ tyegah123我已经添加了答案 – Bhat 2016-01-18 13:02:41

+0

非常感谢! – tyegah123 2016-01-19 06:50:08

2
Class.h 
------- 

@interface AWSCustomCredentialProvider : 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)credentialsWithCredentialsFilename:(NSString *)credentialsFilename; 

- (instancetype)initWithAccessKey:(NSString *)accessKey 
         secretKey:(NSString *)secretKey sessionKey:(NSString*)sessionKey; 


@end 

Class.m 
------- 
+ (instancetype)credentialsWithAccessKey:(NSString *)accessKey 
           secretKey:(NSString *)secretKey sessionKey:(NSString*)sessionKey 
{ 
    AWSCustomCredentialProvider *credentials = [[AWSCustomCredentialProvider alloc] initWithAccessKey:accessKey 
                           secretKey:secretKey sessionKey:sessionKey]; 
    return credentials; 
} 
+ (instancetype)credentialsWithCredentialsFilename:(NSString *)credentialsFilename 
{ 
    NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:credentialsFilename ofType:@"json"]; 
    NSDictionary *credentialsJson = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:filePath] 
                    options:NSJSONReadingMutableContainers 
                     error:nil]; 
    AWSCustomCredentialProvider *credentials = [[AWSCustomCredentialProvider alloc] initWithAccessKey:credentialsJson[@"accessKey"] 
                           secretKey:credentialsJson[@"secretKey"] sessionKey:credentialsJson[@"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; 
} 
Usage is: 
----- 
AWSCustomCredentialProvider *credentialsProvider = [AWSCustomCredentialProvider credentialsWithAccessKey:[[NSUserDefaults standardUserDefaults] objectForKey:AccessKey_Element] secretKey:[[NSUserDefaults standardUserDefaults] objectForKey:SecretKey_Element] sessionKey:[[NSUserDefaults standardUserDefaults] objectForKey:Token_Element]];