我正在访问令牌生成器,该令牌生成器根据我的IP(以及我的用户名和密码)生成令牌。由于我的代码在Azure上的App Service上运行,因此它可能会使用the app service中提到的任何出站IP。
我如何理解我一次使用哪种IP?我正在考虑将令牌存储在每个IP的字典中,然后使用它。
还有更好的方法吗?
一个就像下面一样,但首先,我不喜欢每次都能分开打开一个插座。其次,每次通话的IP都一样吗?
using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0))
{
socket.Connect("8.8.8.8", 65530);
IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint;
localIP = endPoint.Address.ToString();
}
本地IP 出站IP还是入站IP?我也发现了这个:
public static string GetLocalIPAddress()
{
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
return ip.ToString();
}
}
throw new Exception("No network adapters with an IPv4 address in the system!");
}
答案 0 :(得分:0)
我如何理解我一次使用哪种IP?
AFAIK,您无法确定生成令牌时当前使用的IP。
此选项不可配置,选择算法应视为随机。您可以为组合方案中所述的出站指定特定IP地址。
有关详细信息,请阅读此article。
您可以修改令牌生成器的规则,了解如何在IP地址上生成令牌库。
尝试将单个IP地址更改为出站IP地址组。因此,无论哪个IP,令牌都可以与所有出站IP地址匹配。