3

私はAzureを初めて使用し、クラウドサービスではなく新しいWebサイトモデルを使用するプロジェクトに取り組んでいます。次のような継続的デリバリープロセスを設定したいと思います:http ://www.windowsazure.com/en-us/develop/net/common-tasks/publishing-with-tfs/

ただし、継続的な展開のたびに自分のサイトを公開してアドレス指定できるようにしたくありません。代わりに、テスト目的でチームだけが継続的な展開にアクセスできるようにしたいと思います。どうすればこれを最もよく達成できますか?

これまでの考え:

  • サイト全体をフォーム認証でラップしますが、これは、テスト用に展開するものとは異なるバージョンのサイトを本番環境に展開することを意味するという事実は好きではありません。
  • IPアドレスの制限-しかし、これがAzure Webサイトで実行できるかどうか、およびこれが適切なソリューションであるかどうかはわかりません。
4

3 に答える 3

2

URL書き換えモジュールを使用してIP制限を追加できます。これは、AzureWebサイトでデフォルトで有効になっているようです。

あなたの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>

pattern="::1"(IPv6のlocalhost)を適切な正規表現に置き換えて、許可されたIPに一致させることができます。たとえば、pattern="87.236.134.47"複数ある場合は次のようになります。

pattern="(62\.231\.142\.233)|(87\.236\.134\.47)|(::1)|(127\.0\.0\.1)"
于 2013-04-09T12:16:52.773 に答える
2

Azure Webサイトの認証/承認機能は、この正確なシナリオをサポートするように設計されています。基本的に、サイトスロットを作成し、数回クリックするだけで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/

于 2015-01-24T01:39:22.463 に答える
1

クライアントに対して同様のことをしなければなりませんでしたが、Azureポータル自体からサイトへのアクセスを制限する方法を見つけることができませんでした。IPアドレス制限オプションを使用しましたが、アプリケーション自体のコードを使用して実行しました。私のアプリケーションはすでにフォーム認証を使用していたので、サインインアクションでIPアドレスチェックを実行できました。

あなたの場合、カスタムアクションフィルターをお勧めします。フィルタでチェックを実行し、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);
    }
}
于 2013-03-02T13:16:38.337 に答える