【问题标题】:Obtain IP in AWS Cognito Pre Authentication Lambda Trigger在 AWS Cognito 预身份验证 Lambda 触发器中获取 IP
【发布时间】:2022-06-20 05:46:13
【问题描述】:

我正在使用 SAML 作为联合提供商通过 Azure AD 记录我的用户,我想知道此时是否可以接收 ip。如果有怎么办。

【问题讨论】:

    标签: amazon-web-services ip amazon-cognito


    【解决方案1】:

    到目前为止,我还没有找到一种方法可以将 IP 地址发送到 lambda。

    我们所知道的是,预身份验证 lambda 将从 Cognito 接收此类数据:

    {
      version: '1',
      region: '-----------',
      userPoolId: '-----------',
      userName: '--------------',
      callerContext: {
        awsSdkVersion: 'aws-sdk-unknown-unknown',
        clientId: '----------------'
      },
      triggerSource: 'PreAuthentication_Authentication',
      request: {
        userAttributes: {
          sub: '-------------',
          'cognito:email_alias': '----------------,
          'cognito:user_status': 'CONFIRMED',
          email_verified: 'true',
          email: '--------------------'
        },
        validationData: {
          myCustomPropertiesLikeAnIpAddress: 'anIpAddress'
        }
      },
      response: {}
    }
    

    正如我们所见,IP 地址不包含在其中。 但是,我们可以利用“validationData”属性,它是其他属性的集合,可以从客户端设置。

    其中一个属性可能是 IP 地址。

    现在我们需要以某种方式获取此 IP 地址并将其发送给 lambda。

    如果您不介意客户端在登录时简单地删除这部分代码的可能性(当然可以,尤其是网页),但是您当然可以,在您的 lambda 中验证(例如,使所有未设置 ipAddress 属性的请求无效),您可以在客户端中获取您的 IP 地址。

    我发现在客户端应用程序中获取 IP 地址的一种方法是向 http://checkip.dyndns.org/ 发出 GET 请求

    响应将如下所示

    Current IP Address: myIpAddress
    

    只需按照您认为合适的方式清理响应,然后将其添加到您的 cognito 登录请求中。

    【讨论】:

      猜你喜欢
      • 2020-11-04
      • 2018-03-04
      • 2020-08-29
      • 2020-11-03
      • 2016-12-22
      • 2021-08-17
      • 2020-05-12
      • 2018-01-29
      • 2015-07-07
      相关资源
      最近更新 更多