【发布时间】:2022-06-20 05:46:13
【问题描述】:
我正在使用 SAML 作为联合提供商通过 Azure AD 记录我的用户,我想知道此时是否可以接收 ip。如果有怎么办。
【问题讨论】:
标签: amazon-web-services ip amazon-cognito
我正在使用 SAML 作为联合提供商通过 Azure AD 记录我的用户,我想知道此时是否可以接收 ip。如果有怎么办。
【问题讨论】:
标签: amazon-web-services ip amazon-cognito
到目前为止,我还没有找到一种方法可以将 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 登录请求中。
【讨论】: