

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 Amazon Cognito 身份验证和授权与 Web 和移动应用程序集成
<a name="cognito-integrate-apps"></a>

Amazon Cognito 的实现是在应用程序中混合使用 Amazon Web Services 管理控制台 我们的 Amazon 软件开发工具包管理工具和软件开发工具包库。Amazon Cognito 控制台是用于设置和管理 Amazon Cognito 用户池和身份池的直观界面。

使用 Amazon Cognito 用户池可以创建的最省力的集成是[托管登录](cognito-terms.md#terms-managedlogin)。托管登录是一款 ready-to-use基于 Web 的登录应用程序，用于快速测试和部署 Amazon Cognito 用户池。使用托管登录进行用户池身份验证需要使用引导用户访问托管登录页面的 OpenID Connect（OIDC）库。在这一系列用户交互式和重定向 Web 端点中，Amazon Cognito 负责处理身份验证流程，包括第三方登录、多重身份验证（MFA）和选择身份验证流程。您的应用程序只需处理 Amazon Cognito 在响应中返回的身份验证结果即可。

您还可以向应用程序添加 S Amazon DK、自定义构建身份验证接口，并调用 API 操作对用户进行身份验证和授权。 [Amazon Amplify](https://docs.amplify.aws/) Amazon Web Services 服务 用于构建全栈应用程序，后端使用 Amazon Cognito 身份验证。

例如，应用程序可能会调用托管登录进行用户登录，然后从应用程序代码中调用令牌端点，以便通过交换用户的授权码来获取令牌。然后，应用程序必须解释和存储用户的令牌，并在适当的上下文中出示它们以进行身份验证和授权。Amplify 为这些流程添加了带有内置功能的引导式集成工具。

您也可以完全在代码中构建您的 Amazon Cognito 资源。身份池的托管身份验证选项与用户池不同，要访问应用程序中的 Amazon 证书，请在导入的 SDK 模块中实现身份池操作。要开始使用自己的自定义应用程序代码，请访问 Amazon [Cognito 代码](https://docs.amazonaws.cn/cognito/latest/developerguide/service_code_examples.html)示例。[Amazon SDKs](https://www.amazonaws.cn/developer/tools/)要将 Amazon Cognito 作为 OpenID Connect 身份提供者进行集成，请使用 [OpenID Connect 开发人员工具](https://openid.net/certified-open-id-developer-tools/)。

在使用 Amazon Cognito 进行身份验证和授权之前，请选择应用程序平台并准备代码以与服务集成。有关可用的平台 Amazon SDKs，请参阅[使用进行身份验证 Amazon SDKs](#amazon-cognito-authentication-with-sdks)。 Amazon CLI 这是一款适用于 Amazon Cognito Amazon Web Services 服务等的命令行软件开发工具包，是开始熟悉 Amazon Cognito API 操作及其语法的宝贵场所。

**注意**  
Amazon Cognito 的某些组件只能使用 API 进行配置。例如，您只能使用更新[或 [UpdateUserPool](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API 请求中[UserPool](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_UserPoolType.html)类`LambdaConfig`属性的请求来设置用户池自定义 SMS 或电子邮件发件人](https://docs.amazonaws.cn/cognito/latest/developerguide/user-pool-lambda-custom-sender-triggers.html) Lambda 触发器。[CreateUserPool](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)

Amazon Cognito 用户池 API 与多个 API 操作类共享其命名空间。一个类配置用户池及其进程、身份提供者和用户。另一个类包括用户在公共客户端中执行的未经身份验证的操作，旨在登录、注销和管理他们的配置文件。最后一类 API 操作在机密的服务器端客户端中执行您使用自己的 Amazon 凭据授权的用户操作。在开始实现应用程序代码之前，您必须知道您想要的应用程序架构。有关更多信息，请参阅 [了解 API、OIDC 和托管登录页面身份验证](authentication-flows-public-server-side.md#user-pools-API-operations)。

**Topics**
+ [使用进行身份验证 Amazon Amplify](#cognito-integrate-apps-amplify)
+ [使用进行身份验证 Amazon SDKs](#amazon-cognito-authentication-with-sdks)
+ [身份验证如何与 Amazon Cognito 配合使用](cognito-how-to-authenticate.md)
+ [将此服务与 Amazon SDK 配合使用](sdk-general-information-section.md)
+ [使用 Amazon Verified Permissions 进行授权](amazon-cognito-authorization-with-avp.md)

## 使用进行身份验证 Amazon Amplify
<a name="cognito-integrate-apps-amplify"></a>

Amazon Amplify 是用于构建 Web 和移动应用程序的完整解决方案。借助 Amplify，您可以使用 Amplify 库连接到现有资源，也可以使用 Amplify 命令行界面（CLI）创建和配置新资源。Amplify 还连接了用户界面组件（如[身份验证器](https://ui.docs.amplify.aws/react/connected-components/authenticator)），以便在您的应用程序中设置和自定义登录和注册体验。

要在前端应用程序中使用 Amplify 身份验证功能，请参阅以下按平台分列的文档。
+ [适用于 React 的 Amplify 身份验证](https://docs.amplify.aws/react/start/)
+ [适用于 React Native 的 Amplify 身份验证](https://docs.amplify.aws/react-native/start/)
+ [适用于 Swift 的 Amplify 身份验证（iOS）](https://docs.amplify.aws/swift/start/)
+ [适用于 Android 的 Amplify 身份验证](https://docs.amplify.aws/android/start/)
+ [适用于 Flutter 的 Amplify 身份验证](https://docs.amplify.aws/flutter/start/)

Amplify 库是开源的，可在上使用。[GitHub](https://github.com/aws-amplify)要了解有关 Amplify Auth 如何实现 Amazon Cognito 身份验证的更多信息，请访问以下库。
+ [amplify-js](https://github.com/aws-amplify/amplify-js/tree/main/packages/auth)
+ [amplify-swift](https://github.com/aws-amplify/amplify-swift/tree/main/Amplify/Categories/Auth)
+ [amplify-flutter](https://github.com/aws-amplify/amplify-flutter/tree/main/packages/auth)
+ [amplify-android](https://github.com/aws-amplify/amplify-android/tree/main/aws-auth-cognito)

### 使用 Amplify 创建用户界面（UI）
<a name="cognito-integrate-apps-amplify-ui"></a>

[用户池托管登录](cognito-user-pools-managed-login.md)可以满足 Web 或移动应用程序的身份验证前端的基本需求。要在托管登录可容纳的参数之外自定义您的用户界面（UI），请自定义构建应用程序。[Amplify UI](https://ui.docs.amplify.aws/) 是各种语言的前端组件的可自定义集合。

![\[示例 Amplify 身份验证器应用程序的屏幕截图。\]](http://docs.amazonaws.cn/cognito/latest/developerguide/images/amplify-authenticator-ui.png)


要开始使用您的自定义身份验证组件，请访问身份验证器组件的以下文档。
+ [适用于 Android 的身份验证器](https://ui.docs.amplify.aws/android/connected-components/authenticator)
+ [适用于 Angular 的身份验证器](https://ui.docs.amplify.aws/angular/connected-components/authenticator)
+ [适用于 Flutter 的身份验证器](https://ui.docs.amplify.aws/flutter/connected-components/authenticator)
+ [适用于 React 的身份验证器](https://ui.docs.amplify.aws/react/connected-components/authenticator)
+ [适用于 React Native 的身份验证器](https://ui.docs.amplify.aws/react-native/connected-components/authenticator)
+ [适用于 Swift 的身份验证器](https://ui.docs.amplify.aws/swift/connected-components/authenticator)
+ [适用于 Vue 的身份验证器](https://ui.docs.amplify.aws/vue/connected-components/authenticator)

## 使用进行身份验证 Amazon SDKs
<a name="amazon-cognito-authentication-with-sdks"></a>

要使用安全的后端构建您自己的身份微服务以与 Amazon Cognito 交互，请使用您选择的语言版本的软件开发工具包连接到 Amazon Cognito 用户池和 Amazon Cognito 身份池 API。 Amazon 

有关各个 API 操作的详细信息，请参阅 [Amazon Cognito 用户池 API 参考](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_Operations.html)和 [Amazon Cognito API 参考](https://docs.amazonaws.cn/cognitoidentity/latest/APIReference/Welcome.html)。这些文档包含 “[https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#API_InitiateAuth_SeeAlso](https://docs.amazonaws.cn/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#API_InitiateAuth_SeeAlso)” 章节，其中包含 SDKs在支持的平台中使用各种资源的资源。
+ [Amazon 命令行界面](https://docs.amazonaws.cn/cli/latest/reference/cognito-idp/index.html#cli-aws-cognito-idp)
+ [Amazon 适用于 .NET 的 SDK](https://docs.amazonaws.cn/sdkfornet/v3/apidocs/items/CognitoIdentityProvider/TCognitoIdentityProviderClient.html)
+ [Amazon 适用于 C\$1\$1 的 SDK](https://sdk.amazonaws.com/cpp/api/LATEST/aws-cpp-sdk-cognito-idp/html/class_aws_1_1_cognito_identity_provider_1_1_cognito_identity_provider_client.html)
+ [Amazon 适用于 Go 的 SDK](https://docs.amazonaws.cn/sdk-for-go/api/service/cognitoidentityprovider/#CognitoIdentityProvider)
+ [Amazon 适用于 Java 的 SDK V2](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/cognitoidentityprovider/CognitoIdentityProviderClient.html)
+ [Amazon 适用于 JavaScript](https://docs.amazonaws.cn/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html)
+ [Amazon 适用于 PHP 的 SDK V3](https://docs.amazonaws.cn/aws-sdk-php/v3/api/class-Aws.CognitoIdentityProvider.CognitoIdentityProviderClient.html)
+ [Amazon Python 软件开发工具包](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/cognito-idp.html)
+ [Amazon 适用于 Ruby V3 的 SDK](https://docs.amazonaws.cn/sdk-for-ruby/v3/api/Aws/CognitoIdentityProvider/Client.html)