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

Why use Developer identity or third party to authenticate via backend

在 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 似乎在移动设备上自行(自动)管理分配令牌会话,我的想法是正确的还是我遗漏了什么?对此还是很陌生,如果我听起来很无知,请见谅

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

Cognito 支持 Facebook、Twitter、Digits、Amazon、Google、OIDC 提供商和开发人员验证身份来验证用户。如果您希望使用 Parse 对用户进行身份验证,则需要将它们用作经过开发人员身份验证的提供程序。

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