2013-03-02 5 views
3

저는 Azure를 처음 사용하고 있으며 Cloud Services가 아닌 새로운 웹 사이트 모델을 사용하는 프로젝트를 진행하고 있습니다. 다음과 같은 지속적인 전달 프로세스를 설정하고 싶습니다. http://www.windowsazure.com/en-us/develop/net/common-tasks/publishing-with-tfs/Azure 웹 사이트 준비

그러나 각 사이트를 지속적으로 배포 한 후에는 내 사이트가 공개적으로 주소 지정되기를 원하지 않습니다. 대신 테스트 목적으로 내 팀에서만 계속 배포 할 수 있어야합니다. 최선의 방법은 무엇일까요?

생각 지금까지 :

  • 랩 폼 인증에서 전체 사이트 - 그러나 나는 이것이 내가 배포하는 것보다 생산에 내 사이트의 다른 버전을 배포하는 것을 의미한다는 사실을 좋아하지 않는다 테스트하기.
  • IP 주소 제한 -하지만 Azure 웹 사이트에서이 작업을 수행 할 수 있는지 여부와 이것이 좋은 해결책인지 여부는 알 수 없습니다.

답변

2

Azure 웹 사이트 인증/권한 부여 기능은이 정확한 시나리오를 지원하도록 설계되었습니다. 기본적으로 사이트 슬롯을 만들고 몇 번의 클릭만으로 AAD 인증을 추가하고 스왑 작업을 수행 한 후에도 스테이징 슬롯에서 항상 유효한 로그인이 필요합니다.

블로그 포스트 : http://azure.microsoft.com/blog/2014/11/13/azure-websites-authentication-authorization/

데모 비디오 : http://azure.microsoft.com/en-us/documentation/videos/azure-websites-easy-authentication-and-authorization-with-chris-gillum/

1

클라이언트와 비슷한 것을해야했지만 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); 
    } 
} 
2

Azure 웹 사이트가 기본적으로 사용하는 URL 재 작성 모듈을 사용하여 IP 제한을 추가 할 수 있습니다.

귀하의 Web.config :

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="SayNoToZombies" stopProcessing="true"> 
        <match url=".*" /> 
        <conditions> 
         <add input="{REMOTE_ADDR}" pattern="::1" negate="true" /> 
        </conditions> 
        <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="Sorry, you're not allowed" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

당신은 당신의 허용 된 IP와 일치하는 적절한 정규식, 예를 들어, pattern="87.236.134.47"pattern="::1" (IPv6의에서 로컬 호스트를) 대체 할 경우 또는 하나 이상의 수

pattern="(62\.231\.142\.233)|(87\.236\.134\.47)|(::1)|(127\.0\.0\.1)" 
+0

감사 톰. 이 구성 기반 솔루션을 사용하면 web.config 변환을 사용하여 테스트 중에이 제한 사항을 쉽게 적용 할 수 있지만 프로덕션 용으로 빌드 할 때이를 제거 할 수 있습니다. – John