我们希望只有在公司网络内部运行时才启用我们软件的某些隐藏功能。关键要求是:
我的想法:
答案 0 :(得分:0)
如果使用ActiveDirectory,则可以添加对System.DirectoryServices命名空间的引用并检查
ActiveDirectorySite currentSite = ActiveDirectorySite.GetComputerSite();
然后你可以从currentSite对象中获取一些信息并检查它。这就是我如何启用/禁用我当前正在开发的应用程序的功能。
我也抓住了:
var client = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in client.AddressList)
{
if(ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
ipAddress = ip;
}
}
您可以检查以确保客户端使用正确的协议进行连接。
答案 1 :(得分:0)
我选择了最后一个选项:在Intranet中设置网络服务器并验证证书。
比预期容易。对于每个支持的操作系统,都有足够的教程可以使用https设置apache。自签名证书的有效期为9999天 - 应该可以使用到2042年.C#-part也很合理:
private static bool m_isHomeLocation = false;
public static bool IsHomeLocation
{
get
{
if (m_isHomeLocation)
return true;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://yourLicenseServer:yourConfiguredPort");
request.ServerCertificateValidationCallback += ((s, certificate, chain, sslPolicyErrors) => true);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.Close();
var thumbprint = new X509Certificate2(request.ServicePoint.Certificate).Thumbprint;
m_isHomeLocation = (thumbprint == "WhateverThumbprintYourCertificateHave");
}
catch
{
// pass - maybe next time
}
return m_isHomeLocation;
}
}