为什么使用开发者身份或第三方通过后端进行身份验证

时间:2015-07-30 20:27:44

标签: ios objective-c amazon-web-services parse-platform amazon-cognito

在作为Amazon Web Services示例提供的IOS SDK S3TransferManager示例中,我看起来好像可以访问s3之类的AWS资源,而无需通过Facebook或Google等身份验证提供程序。那么,如果我使用Parse,拥有自己的开发人员身份或通过后端而不是移动设备进行身份验证的目的是什么?例如,我相信Parse使用前端身份验证(在移动设备上)来验证用户,而不是使用他们的Cloud Code服务(https://parse.com/docs/js/guide#cloud-code)进行后端身份验证

"Cloud Code is easy to use because it's built on the same JavaScript 
SDK that powers thousands of apps. The only difference is that this  
code runs in the Parse Cloud rather than running on a mobile device."

我不能仅通过前端解析验证用户,并且成功时只需将下面的代码复制并传递到成功块中即可?

// Authenticate with Parse and if authentication succeeded execute code below
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc]
                                                      initWithRegionType:AWSRegionUSEast1
                                                      identityPoolId:@"identity-pool"];

AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];

[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;

仍然可以访问我的aws资源。这样我就不需要使用AWSCredentialsProvider协议,该协议需要从后端发送到我的应用程序的访问密钥,密钥和会话密钥。此外,似乎IOS SDK管理自己(自动)在移动设备上分配令牌会话,我的想法是正确的还是我错过了什么?如果我听起来无知,那么还是对此感到很难过。

1 个答案:

答案 0 :(得分:2)

Cognito根据两种不同的范围委派凭据 - 未经身份验证和身份验证。这些类型的用户的权力由unauth和auth角色定义,这些角色由使用的身份池创建并链接。 S3演示使用未经身份验证的用户,这就是他们不需要某些提供商的原因。如果您没有外部需求并且只考虑使用Cognito进行凭据,那么您需要的是未经身份验证的用户。他们自己工作。有关详细信息,请参阅Cognito developer guide

Cognito支持Facebook,Twitter,数字,亚马逊,Google,OIDC提供商以及开发人员身份验证身份,以对用户进行身份验证。如果您希望使用Parse对用户进行身份验证,则需要将它们用作开发人员身份验证提供程序。

要明确的是,这并不意味着您的后端必须发送访问密钥/密钥等。到你的设备。 This blog post会更详细地介绍它,但应用会将登录凭据发送到您的后端。此后端将验证这些并从Cognito获取identityId / token。这些将被发送回设备,然后设备将发回以获取访问AWS的凭据。