0

私はWindowsAzureクラウド用の新しいWebアプリケーションを開発していますが、利用可能なすべてのガイドライン、最良のプラクティス、ストレージの可能性、キャッシュ、およびセキュリティに混乱しています。私はたくさんのビデオを見たり、たくさんのドキュメントを読んだりしましたが、読むほど、意思決定の層に混乱が生じます。これが私が欲しいものです:

1-ユーザーが電子メールとパスワードの組み合わせを使用してログインできるWebアプリケーションを開発します。ログインすると、ユーザーはUserID+CustomerIDの組み合わせを含むセッションを持ちます。UserID + CustomerIDは、このユーザーの特定のデータを表示するために使用されます。アプリケーションは法律事務所向けであるため、セキュリティは非常に厳しくする必要があります。アプリケーションには10000人以上のユーザーがいて、同時に約200〜500人のユーザーがいる可能性があります。ノードのアップグレード/障害のあるノードの場合にセッションがリセットされないようにするには、ASP.NETセッションを共有キャッシュサービスに保存する必要があることを読みました。128 mbキャッシュには1秒あたり100トランザクションの制限があることを理解している限り、これが機能するかどうかはわかりません。キャッシュからセッションデータを取得している場合、これは1トランザクションとしてカウントされますか?

古いアプリケーションでは、次のようなコードを使用しています(このアプローチは、Azureに適していますか、それとも処理用のカスタムセッション管理システムを開発する必要がありますか?コードサンプルはありますか?):

    protected void CustomValidatorLogin_ServerValidate(object source, ServerValidateEventArgs args)    
    {
        string result = String.Empty;
        if (DataAccess.User_Logon(this.txtEmail.Text, this.txtPassword.Text, Request.UserHostAddress, Request.UserAgent, ref result)
        {
           args.IsValid = true;
           FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,    this.txtEmail.Text, DateTime.Now, DateTime.Now.AddMinutes(Constants.sessionExpires), false, result);
           HttpCookie cookie = null;
           if (cbRemember.Checked)                
           {
              FormsAuthenticationTicket sticket = new FormsAuthenticationTicket(1, result, DateTime.Now, DateTime.Now.AddMinutes(Constants.sessionExpires), false, result);
              cookie = new HttpCookie(FormsAuthentication.FormsCookieName + Constants.cookiePrefix, FormsAuthentication.Encrypt(sticket));
              cookie.Expires = DateTime.Now.AddYears(1);
           }
           else
           {
            cookie = new HttpCookie(FormsAuthentication.FormsCookieName + Constants.cookiePrefix, string.Empty);
            cookie.Expires = DateTime.Now.AddYears(-1);
        }
            Response.AppendCookie(cookie);
            FormsAuthentication.SetAuthCookie(result, false);
        }
        else
        {
            args.IsValid = false;
        }
    } 

2-同様に、この http://www.windowsazure.com/en-us/develop/net/best-practices/security/ によると、私が知っておくべきセキュリティ上の考慮事項がたくさんあります。誰かがこれらのベストプラクティスを取り入れてログイン機能を作成する方法に関するいくつかのコードサンプルをお勧めできますか?

3-システムは、ユーザーが後でダウンロード、削除、更新できるデータ(アップロードファイル)を保存できるようにします。ファイルは両方ともユーザー固有(UserID)であるだけでなく、顧客固有(CustomerID)でもあります。たとえば、ユーザーは自分だけがアクセスできるファイル(UserID)をアップロードできますが、CustomerIDに基づいて組織全体(法律事務所)が利用できるファイルをアップロードすることもできます。BLOBとテーブルのどちらを選択するのか、そしてその理由がわかりません。さらに、そのような機能を実装するためのベストプラクティスは何でしょうか。

4-データアクセス層にエンタープライズライブラリを使用することを考えています-Azureの初心者向けの優れたビデオウォークスルーを知っている人はいますか?

これは私が知っている非常に多くの質問ですが、それでもいくつかの専門家の推奨を期待しています。

乾杯。

4

3 に答える 3

1

実稼働アプリケーションの重要な設計上の決定を行っているようです。そのため、この基本的なことについてフォーラムのアドバイスだけに頼るのではなく、専門家と協力することを強くお勧めします。

項目1(セキュリティ)に関して、あなたが参照したセキュリティのベストプラクティスの記事は良いものですが、それはあなたのためにあなたの決定を下すことはありません。指摘しているように、IDを処理する方法はたくさんありますが、WindowsAzureでは特定の方法で処理することはできません。IDを処理する最も最新の方法は、クレームベースのセキュリティと呼ばれます。クレームベースのセキュリティを使用する場合は、IDプロバイダー(IP)が誰であるかを決定する必要があります。これは、ドメイン(Active Directory経由)、ソーシャルWebネットワークプロバイダー(Google、Yahoo、Facebookなど)、または資格情報データベースに裏打ちされた独自のカスタムセキュリティトークンサービスである可能性があります。複数のIDプロバイダーをサポートする場合(ユーザーがサインインする方法を選択できるようにするため)、仲介者としてWindowsAzureのアクセス制御サービスを利用することをお勧めします。

項目2(セキュリティサンプル)については、 Windows Identity DeveloperTrainingKitのハンズオンラボを試すことをお勧めします。これにより、クレームベースのセキュリティがどのようなものかをよく理解できます。

項目3(ファイル指向データの保存と取得)に関しては、blobストレージが使用する論理サービスになります。説明したセキュリティおよび共有機能を提供するには、アクセスレイヤーとユーザーインターフェイスを提供する必要があります。

項目4(Windows Azureでのデータアクセスにエンタープライズライブラリを使用)に関しては、この記事が役立つ場合があります。

于 2012-07-23T15:48:05.403 に答える
0

「FormsAuthentication.SetAuthCookie(result、false);」を削除する以外は、メソッドは問題ありません。ライン。Azureでは、UserDataフィールドの値が失われたり、userDataフィールドの外観がその値を保持していないように見えます。実際には、SetAuthCookieは、すでに確立されているチケットの2番目のバージョンを作成します。チケットのインスタンスを他のプロセスにスポーンする必要がある場合は、これが役立つと思います。ほとんどのアプリケーションでは、単一のWebロールに対してクラウドワークを実行するために必要なのは単一のバージョンだけです。また、このアプローチを採用し、紺碧のストレージテーブルを使用して、必要な追加データを格納しました。これができてよかったです。Azureには、このアプローチを含むセッション変数がnullを返すことがあるという奇妙な出来事がいくつかあります。これは、UDPとTCPのストリーミングに似ています。インターネットはストリーミングしています。1バイトがオフになり、次の更新でセッションが終了して再び戻るように見えます。そのため、Azureのテーブルストレージを使用してさらに保証を追加しました。そこでセッショントランザクションを作成しています。これまでのところ、テーブルの取引は非常に少なく、安心です。

于 2012-07-25T20:32:57.253 に答える
0

これを特定の質問に分解する必要があります。

  1. アプリでuserIDパスワードを管理する場合は、MembershipServicesがオプションです。認証のためにサードパーティを信頼したい場合は、ACS。ログオンとセッションが同じ質問であるのはなぜですか。

  2. セキュリティについての詳細。要件から始める

  3. テーブルには行サイズの制限があります。小さなファイルしかありませんか?
    SharedAccessSignitureはWebサイトの負荷を軽減します

  4. あなたはビデオでしか学ぶことができませんか?さあ、そこにはたくさんの情報があります。

于 2012-07-23T18:55:06.930 に答える