【问题标题】:AWSWebIdentityCredentialsProvider How to get parameters values?AWSWebIdentityCredentialsProvider 如何获取参数值?
【发布时间】:2014-10-01 10:51:55
【问题描述】:

我正在尝试使用以下代码进行身份验证,

但我无法获取需要传递给以下参数的值, providerId、roleArn、roleSessionName。

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

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

问候, 呸

【问题讨论】:

  • 您好,您可能需要考虑使用Amazon Cognito。它通过 STS 提供与 Web 联合身份验证相同的提供商支持。

标签: ios authentication amazon-web-services


【解决方案1】:
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]];

【讨论】:

    【解决方案2】:

    我创建了自定义凭据提供程序,亚马逊身份验证机制完美运行 :)。 我已遵循与静态凭据提供程序相同的步骤。

    【讨论】:

    • 你能给我你的代码示例吗?我正在尝试做同样的事情。我的老板坚持根本不使用 cognito,所以我需要这样做。
    • @tyegah123 我已经添加了答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2016-10-09
    • 2016-05-30
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多