使用 Active Directory 为 AWS SFTP 设置自定义 IDP

使用 Active Directory 为 AWS SFTP 设置自定义 IDP

我一直在研究如何为 AWS SFTP 设置自定义身份验证,这是一个非常棘手的问题。有很多关于如何使用自定义 idp 的参考资料,但没有具体的例子。

我们正在使用 Active Directory,并且目前已设置 AWS SSO,因此理论上可以与 SAML 联合。对于我的测试实例,我在目录服务中设置了 Microsoft AD,并启用了 SSO。

亚马逊的示例提供了一个主要基于 lambda 函数的云形成模板。lambda 函数非常简单,它根据 Amazon Secrets 验证硬编码到 lambda 中的密码。显然,这并不实用。

有人做过这个吗?你是怎么让它工作的?

我想另一个问题是是否有人使用过 lambda 来针对 AD 进行身份验证?

以下是我查看过的一些资源。只有 Cognito 用户池提供了任何类型的替代设置的详细说明。我们可能能够使用 Cognito 身份池,但用户池不适合我们的用例。

有关 SFTP 自定义身份验证的 AWS 文档

将 SFTP 与 Cognito 用户池集成

基本 sftp 设置的详细演练

有关自定义 IDP 的更多信息

答案1

您可以使用与博客文章中类似的方法使用自定义身份提供商,但用 Active Directory 绑定替换 AWS Cognito API 调用。

以下是相关的代码片段:

exports.authorize = async function(event) {
  return new Promise((resolve, reject) => {
    const username = event.pathParameters.user;
    const password = event.headers.Password;

    console.log(`Performing authentication for user ${username}`);

    client.bind(`${username}@${process.env.LDAP_DIRECTORY_NAME}`, password, err => {
      if (err) {
        reject(err);
      } else {
        const response = {
          headers: {
            "Access-Control-Allow-Origin": "*",
            "Content-Type": "application/json"
          },
          body: getSftpPolicy(username),
          statusCode: 200
        };
        resolve(response);
      }
    });
  });
};

您可以在此处找到更多信息博客文章。请随意使用此GitHub 存储库使用项目模板。

相关内容