我正在使用SAML作为联盟提供商通过Azure AD记录我的用户,我想知道此时是否可以接收ip。如果是,如何。
到目前为止,我还没有找到将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。
我发现在客户端应用程序中获取IP地址的一种方法是向https://geolocation-db.com/json/(或向任何其他IP提供商提出的请求(
响应看起来像这个
Current IP Address: myIpAddress
只需按照您认为合适的方式清理响应,然后将其添加到您的cognito登录请求中。
更改客户端的代码、不发送或发送修改后的IP地址是有风险的,根据这一点的重要性,您可以在lambda本身上进行验证。你必须看到,真的,一个人会有多大的动力,去做这样的修改。