클라이언트와 비슷한 것을해야했지만 Azure 포털 자체에서 사이트에 대한 액세스를 제한 할 수있는 방법을 찾을 수 없었습니다. IP 주소 제한 옵션을 사용했지만 응용 프로그램 자체의 코드를 통해 수행했습니다. 내 응용 프로그램은 이미 양식 인증을 사용하고 있었으므로 로그인 동작에서 IP 주소 확인을 수행 할 수있었습니다.
귀하의 경우에는 custom action filter을 제안합니다. 필터에서 검사를 수행하고 IP 주소가 허용되지 않으면 http 401 (인증되지 않은) 상태 코드를 반환하십시오.
AllowedIpAddresses
또는 허용되는 IP 주소 목록을 쉼표로 구분하여 추가 할 수있는 앱 설정을 만듭니다. 검사를 수행 할 때 AllowedIpAddresses
이 비어 있거나 존재하지 않는 경우 모든 트래픽을 허용하도록 사이트를 설정할 수 있습니다. 이렇게하면 프로덕션 환경에서이 설정을 무시할 수 있으며 모든 트래픽이 기본적으로 허용됩니다. Azure 포털에서 각 사이트에 대한 사용자 정의 앱 설정을 설정할 수 있습니다.
다음은 맞춤 필터의 모습입니다. 나는 이것을 시험하지 않았다!
public class AccessRestrictionFilterAttribute : ActionFilterAttribute
{
// simple wrapper around ConfigurationManager.AppSettings for testability
private readonly IAppSettingsHandler appSettingsHandler;
public AccessRestrictionFilterAttribute(IAppSettingsHandler appSettingsHandler)
{
this.appSettingsHandler = appSettingsHandler;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var isAllowed = false;
var userIpAddress = filterContext.HttpContext.Request.UserHostAddress;
if (appSettingsHandler.AllowedIpAddresses.Split(new[] { ',' }).Any(x => x == userIpAddress))
{
isAllowed = true;
}
if (!isAllowed)
{
filterContext.Result = new HttpUnauthorizedResult();
}
base.OnActionExecuting(filterContext);
}
}
감사 톰. 이 구성 기반 솔루션을 사용하면 web.config 변환을 사용하여 테스트 중에이 제한 사항을 쉽게 적용 할 수 있지만 프로덕션 용으로 빌드 할 때이를 제거 할 수 있습니다. – John