Существует нет встроенного способа, позволяющего это сделать, но я думаю, вы должны иметь возможность написать быстрый модуль, который предоставляет «IP-аутентификацию», и это позволит вам иметь это в дополнение к другим модулям аутентификации и в зависимости от того, обеспечивает Идентичность.
Например, вот быстрый пример:
public class IPAuthenticationModule : IHttpModule {
private IPAddress[] ipAddresses = {};
public void Dispose() {
}
public void Init(HttpApplication context) {
string s = ConfigurationManager.AppSettings["ipAddresses"];
if (!string.IsNullOrWhiteSpace(s)) {
this.ipAddresses = s.Split(',').Select((ip) => IPAddress.Parse(ip.Trim())).ToArray();
}
context.AuthenticateRequest += OnContextAuthenticateRequest;
}
private void OnContextAuthenticateRequest(object sender, EventArgs e) {
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
if (context.User == null) {
string clientIP = context.Request.UserHostAddress;
IPAddress clientIPAddress = IPAddress.Parse(clientIP);
if (this.ipAddresses.Contains(clientIPAddress)) {
context.User = new GenericPrincipal(
new GenericIdentity(clientIP, "Basic"),
new string[] { "IPAddressRole" });
}
}
}
}
затем в вашем web.config настроить модуль, а также IPaddresses позволили, например:
<appSettings>
<add key="ipAddresses" value="127.0.0.1,::1"/>
</appSettings>
<system.webServer>
<modules>
<add name="IPAuthenticationModule" type="IPAuthenticationModule, YourDLLName"/>
</modules>
<security>
<authorization>
<add accessType="Deny" users="?" />
</authorization>
</security>
</system.webServer>
Это позволит доступ до 127.0.0.1 и ввести роль «IPAddressRole» в идентификаторе, чтобы вы могли даже предоставить доступ выше, а также ограничить/разрешить разные уровни доступа на основе той роли, которая представляет IP. Он также будет использовать имя пользователя в качестве IP-адреса, поэтому в журналах и все это вы увидите.
Возможный дубликат: http://stackoverflow.com/questions/2337842/is-it-possible-to-configure-a-location-in-web-config-to-only-allow-local-connect –
I заглянули в ipsecurity, но я хочу объединить два метода, я хочу, чтобы это было так: Если запрос исходит от одного конкретного IP-адреса, доступ всегда будет предоставляться из всех других IP-адресов, которые должны быть зарегистрированы пользователем in и член одной из групп, определенных в разделе авторизации – user3279044