

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

# 自定义身份提供商解决方案
<a name="custom-idp-toolkit"></a>

 AWS Transfer Family 自定义身份提供商解决方案是一种模块化的自定义身份提供商解决方案，可解决企业在实施该服务时遇到的许多常见身份验证和授权用例。该解决方案为通过精细的每用户会话配置实现自定义身份提供商提供了可重复使用的基础，并将身份验证和授权逻辑分开，为各种用例提供了灵活且易于维护的基础。

使用 AWS Transfer Family 自定义身份提供商解决方案，您可以解决常见的企业身份验证和授权用例。该模块化解决方案提供：
+ 用于实现自定义身份提供商的可重复使用的基础 
+ 精细的每用户会话配置 
+ 分离的身份验证和授权逻辑 

## 自定义身份工具包的实现细节
<a name="idp-toolkit-implementation-details"></a>

该解决方案为各种用例提供了灵活且可维护的基础。要开始使用，请查看中的工具包 [ https://github.com/aws-samples/toolkit-for-aws-transfer-family](https://github.com/aws-samples/toolkit-for-aws-transfer-family)，然后按照 “[入门](https://github.com/aws-samples/toolkit-for-aws-transfer-family/tree/main/solutions/custom-idp#getting-started)” 部分中的部署说明进行操作。

![中提供了自定义身份提供商工具包的架构图 GitHub。](https://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/custom-idp-solution-high-level-architecture.png)


**注意**  
如果您之前使用过自定义身份提供商模板和示例，请考虑改用此解决方案。展望未来，提供商专属模块将基于该解决方案进行标准化。持续的维护和功能增强将应用于该解决方案。

该解决方案包含用于实现自定义提供程序的标准模式，该提供程序说明了详细信息，包括日志记录以及在何处存储所需的额外会话元数据 AWS Transfer Family，例如`HomeDirectoryDetails`参数。该解决方案为使用精细的每用户会话配置实现自定义身份提供商提供了可重复使用的基础，并将身份提供商身份验证逻辑与可重用逻辑分离，后者生成返回给 Transfer Family 的配置，以完成身份验证和建立会话设置。

此解决方案的代码和支持资源可在以下网址获得[https://github.com/aws-samples/toolkit-for-aws-transfer-family](https://github.com/aws-samples/toolkit-for-aws-transfer-family)。

该工具包包含以下功能：
+ 提供所需资源的[AWS Serverless Application Model](https://aws.amazon.com/serverless/sam)模板。或者，按照博客文章 “使用 AWS Web 应用程序防火墙和亚马逊 API 网关 AWS Transfer Family 进行[保护” 中所述，部署和配置亚马逊 API 网关以整 AWS WAF合](https://aws.amazon.com/blogs/storage/securing-aws-transfer-family-with-aws-web-application-firewall-and-amazon-api-gateway/)。
+ 一个 [ Amazon DynamoDB ](https://aws.amazon.com/dynamodb) 架构，用于存储有关身份提供商的配置元数据，包括`HomeDirectoryDetails``Role`、和等用户会话设置。`Policy`
+ 一种模块化方法，使您能够将来以模块的形式向解决方案中添加新的身份提供商。
+ 属性检索：可以选择从支持的身份提供商（包括 AD、LDAP 和 Okta）检索 IAM 角色和 POSIX 配置文件（UID 和 GID）属性。
+ 支持使用相同的解决方案部署连接到单个传输系列服务器的多个身份提供商和多个 Transfer Family 服务器。
+ Built-in IP 允许列表检查，例如 IP 允许列表，可以选择在每个用户或每个身份提供商的基础上进行配置。
+ 详细的日志记录，可配置的日志级别和跟踪支持，以帮助进行故障排除。

在开始部署自定义身份提供商解决方案之前，您需要拥有以下 AWS 资源。
+ 具有私有子网的亚马逊虚拟私有云 (VPC)，可通过 NAT 网关或 DynamoDB 网关终端节点进行互联网连接。
+ 执行以下任务的适当 IAM 权限：
  + 部署`custom-idp.yaml` CloudFormation 模板，
  + 创建 AWS CodePipeline 项目
  + 创建 AWS CodeBuild 项目
  + 创建 IAM 角色和策略

**重要**  
你必须将解决方案部署到包含目标 Trans AWS 账户 f AWS 区域 er Family 服务器的相同服务器上。

## 支持的身份提供商
<a name="custom-supported-idp"></a>

以下列表包含自定义身份提供商解决方案支持的身份提供商的详细信息。


| Provider | 密码流量 | 公钥流 | Multi-factor | 属性检索 | 说明 | 
| --- | --- | --- | --- | --- | --- | 
| 活动目录和 LDAP | 支持 | 是 | 否 | 是 | 用户验证可以作为公钥身份验证流程的一部分执行。 | 
| Argon2（本地哈希） | 是 | 否 | 否 | 否 | Argon2 哈希存储在基于 “本地” 密码的身份验证用例的用户记录中。 | 
| Amazon Cognito | 是 | 否 | 是\* | 否 | Time-based One-Time 仅限基于密码 (TOTP) 的多因素身份验证。<br />\* 不支持 SMS-based MFA。 | 
| Entra ID（以前是 Azure AD） | 是 | 否 | 否 | 否 |  | 
| Okta | 支持 | 是 | 是\* | 是 | TOTP-based 仅限 MFA。 | 
| 公有密钥 | 否 | 是 | 否 | 否 | 公钥存储在 DynamoDB 的用户记录中。 | 
| Secrets Manager  | 支持 | 是 | 否 | 否 |  | 