問題タブ [machinekey]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - ASP.NET 4 メンバーシップ マシン キー
私は asp.net 4 メンバーシップ Web サイトを約 5 か月間運用してきましたが、今日は正規表現を変更してパスワードの制限を緩和しました。新しいアカウントを作成してアクセスすることはできますが、以前に登録したアカウントにはアクセスできなくなりました。
データベースをチェックしたところ、それらがすべて残っていることを確認しました。私の最初の考えは、間違ったパスワードでした。パスワードを知っている 2 つのアカウントを確認しましたが、両方ともアクセスできません。パスワード回復オプションを使用しようとしましたが、ユーザー名を入力すると、ユーザーが存在しないと言われました。
データベースをチェックしてメンバーシップ テーブルとプロファイル テーブルの両方を参照すると、古いユーザーと新しいユーザー、正規表現の変更前と変更後のすべてが同じテーブルに含まれています。これは、私が経験したことのない最終的な発見につながります。新しいユーザーを作成しているが、古いユーザーを解読できない新しいマシン キーはありますか? もしそうなら、どうすればこれを修正できますか?
dotnetnuke - DotNetNukeをインストールして、既存のユーザーを移行できるようにするにはどうすればよいですか?
DNN6.0の新規インストールを行っています。
私は数千人のユーザーがいる既存の4.xサイトを持っています。私の目標は、いくつかのSQLクエリを使用してユーザーを古いデータベースから新しいデータベースにコピーすることです。もちろん、2つのサイトには同じmachineKeyが必要です。
インストーラーを実行する前にmachineKey値を設定する必要があると思いましたが、インストールプロセスによって上書きされます。
インストーラーの実行後にmachineKeyを変更すると、インストールプロセス中に作成されたホストログインにアクセスできません。
私は何が欠けていますか?
サードパーティの移行ツールを使用するつもりですが、ポータル間でユーザーを移動するのではなく、Webサイト間でユーザーを移動することに注意してください。
重要な場合は、Windows2003でSQLServerを使用しています。
encryption - SHA1 または AES - asp.net ではどちらが優れていますか?
asp.netの3.5フレームワークのMachineKeyで使用するのに適しているのはどれですか?
そしてその理由は何ですか?
asp.net-mvc-3 - 提供されたユーザー名またはパスワードが正しくありません。MVC3インターネットアプリケーションで
「インターネットアプリケーション」-「フォーム認証を使用するアカウントコントローラーを備えたデフォルトのASP.NETMVC3プロジェクト」があります。 「 MyMv3App」と呼ばれます。Ctrl +F5を使用してIISExpressでサイトを実行してから、localhost:10382 / Account / Registerに移動し、ユーザー「test1」を作成します。ユーザーが作成されると、ホームページにリダイレクトされます。ログオフします。次に、localhost:10382 / Account / LogOnに移動し、ユーザー「test1」のユーザー名とパスワードを入力して「ログオン」ボタンをクリックすると、ユーザーがログインします。これまでのところ、すべてOKです。
次に、新しいC#「クラスライブラリ」プロジェクトを追加し、 MyCustomMembershipProviderという名前を付けます。次に、ここhttp://weblogs.asp.net/scottgu/archive/2006/04/13/442772.aspxからProviderToolkitSamples.msiをダウンロードし、msiインストーラーを実行して、C:\ Program Files(x86)フォルダーに移動します。 )\ ASP.NET ProviderToolkitSQLサンプル。すべてのファイルがインストールされます。次に、これらのファイルを、作成したC#クラスライブラリプロジェクトMyCustomMembershipProvider、SQLMembershipProvider.cs、SecUtil.cs、SqlConnectionHelper.cs、およびSR.csに追加します。。(これらすべてのファイルが必要です。そうしないと、C#クラスライブラリプロジェクトのMyCustomMembershipProviderがコンパイルされません)。次に、System.configuration、System.Web、およびSystem.Web.ApplicationServicesへの参照をC#クラスライブラリプロジェクトMyCustomMembershipProviderに追加します。次に、プロジェクトをビルドしてから、MyMvc3Appに移動し、MyCustomMembershipProviderプロジェクトへの参照を追加します。
注:プロジェクトMyCustomMembershipProviderの4つのファイルすべての名前空間を「namespaceMyCustomMembershipProvider」に変更し、クラス名の名前をMyCustomMembershipProviderに変更したことを忘れてしまいました。また、SQLMembershipProvider.csの110行目で、name="SqlMembershipProvider";から変更しました。to name = "MyCustomMembershipProvider";
次に、web.configファイルのメンバーシップセクションを次のように変更します。
これに:
web.config全体は次のようになります。
今、私は最初の段落で行ったのとまったく同じことをします。localhost:10382 / Account / Registerに移動してユーザーを作成します。今回は、ユーザーを「test2」と呼びます。ユーザーが作成されると、ホームページにリダイレクトされます。ログオフします。次に、localhost:10382 / Account / LogOnに移動して再度ログインし、ユーザー「 test2 」のユーザー名とパスワードを入力して「ログオン」ボタンをクリックすると、エラーメッセージが表示されます。
ログインに失敗しました。エラーを修正して、再試行してください。提供されたユーザー名またはパスワードが正しくありません。
なんで?私は何を取りこぼしたか?110行目のSQLMembershipProvider.csの名前空間とその名前変数以外には何も触れていません。
理由を理解しようとしたので、グーグルで調べて、machineKey要素を追加すると機能する可能性があることがわかりました。そこで、このサイトhttp://www.developmentnow.com/articles/machinekey_generator.aspxにアクセスし、ASP.NET 2.0 machineKeyを生成して、web.configのsystem.web要素にコピーして貼り付けました。
私はもう一度、以前とまったく同じことをしました。localhost:10382 / Account / Registerに移動してユーザーを作成します。今回は、ユーザーを「test3 」と呼んでいます。ユーザーが作成されると、ホームページにリダイレクトされます。ログオフします。次に、localhost:10382 / Account / LogOnに移動し、ユーザー「 test3 」のユーザー名とパスワードを入力して、「ログオン」ボタンとBAMをクリックします。ユーザーは再びログインしています!?
MyCustomMembershipProviderがログインページで機能できるようにするには、web.configで生成されたvalidationKeyとdecryptionKeyを使用してmachineKeyを手動で構成する必要があるのはなぜですか?私が見た限りでは、カスタムメンバーシッププロバイダーが機能できるようにweb.configにmachineKey要素を追加することについて説明している記事/ページ/ブログは1つもありません。
更新1:hashAlgorithmType = "SHA1"の追加も同様に機能します:
面白いことに、MSDNはSHA1がデフォルトだと言っています!?
hashAlgorithmTypeオプションの文字列属性。パスワード値のハッシュに使用される暗号化アルゴリズムの名前を指定します。この属性の値は、cryptoNameMapping構成セクションのnameEntry要素のname属性に対応します。カスタムハッシュアルゴリズムの指定については、アルゴリズム名の暗号化クラスへのマッピングを参照してください。 デフォルトはSHA1です。
更新2:Microsoftの最新テクノロジを読んだ後、最新のMebershipプロバイダーに関して発見した調査結果のいくつかを共有することにしました。SimpleMembership。私は個人的なプロジェクトの段階にあり、代わりにSimpleMembershipプロバイダーを構築して使用したASP.NET2.0日からCustomMembershipProviderを削除することにしました。なんで?さて、あなたはジョン・ギャロウェイによる次のブログ投稿であなたが知りたいと思うであろうすべての情報を持っています。また、チェックする価値のあるリソースへのリンクをいくつか追加しています。Microsoftによると、SimpleMembershipはASP.NET2.0メンバーシップの後継です。
http://mvccentral.net/Story/Details/tools/kahanu/securityguard-nuget-package-for-asp-net-membership
http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx
asp.net - フォーム認証チケットは安全ですか?
ユーザーがデフォルトのフォーム認証方法に基づいてログインすると、サーバーは暗号化されたデータを含む Cookie を作成します (暗号化のキーとしてマシン キーを使用)。
これは、誰かがサーバーのマシン キーを見つけたり、推測したり、アクセスしたりすると、Web アプリケーションにログインすることを意味します。
4 つのサーバー上にあるいくつかのアプリケーションを開発しました。そのため、machine.config 内のすべてのサーバーに対して同じマシン キーをハードコーディングしましたが、自動生成モードを使用できません。
- マシンキーを総当たり攻撃することは可能ですか?
- 他の方法はありますか?(WindowsとPassportは使いたくない)
- また、フォーム認証チケットは十分に安全ですか? (つまり、電子バンキング アプリケーションに使用できます)
asp.net - ASP.NET/SQLServerでのセッション状態の喪失
ロードバランサーによって管理される2つのWebサイトとして構成されたASP.NETMVCワークフローがあります。Webサイトはセッション状態プロバイダーとしてSQLServerを使用し、認証スイッチをオフにします(必須ではありません)。
現在、散発的にセッション状態が失われているように見えます。これは、リクエストが代替サーバーによって処理されているためだと思います。そのため、ロードバランサーの判断に応じて、基本的にユーザーはサーバーからサーバーにジャンプします。ワークフローの同じ段階で常に「セッション状態が失われる」とは限らないため、Webファームの構成+SQLサーバーのセッション状態に関連していると思います。
どちらのアプリケーションも同じマシンキーを使用して、SQLサーバーに格納されているセッション状態を暗号化および復号化します。
両方のサーバーの構成は次のとおりです。
これは両方のサーバーで同じであることを確認しましたが、不足しているものはありますか?
単一のサーバーを使用している場合、これは開発環境では発生しません。
私は金曜日のブルースに苦しんでいるのではないかと心配しています。来週は間違いなく答えがわかります。悲しいことに、待ちたくありません。
何か案は?
asp.net - Asp.net 認証 Cookie 暗号化の問題
Web ファームに 2 つのサーバーがあります。どちらも同じ machineKey を使用します。一方のサーバーが認証 Cookie を生成すると、もう一方のサーバーは理解できません。他に何が確認できますか?
forms-authentication - 異なる Web アプリ間で FormsAuthentication を使用して「データを検証できません」
同じサーバーで 2つの.NET Webアプリケーションを実行しています。
Sentinel は認証「ポータル」です。FortKnox は、フォーム認証を使用する「概念実証」アプリですが、loginUrl がhttps://sentinel.mydomain.com/loginに設定されています(ReturnUrl を修飾する特別な Application_EndRequest ハンドラーと共に)。Sentinel は、MVC 4 と Razor を使用して .NET 4.0 で作成されています。FortKnox は、.NET 2.0 を使用した ASP.NET MVC 2 です。
.mydomain.comCookie ドメインを に設定して ASP.NET FormsAuthentication を使用していsentinel.mydomain.comますwww.mydomain.com。Cookie 部分は完全に機能しています。両方のアプリケーションが同じ .ASPXAUTH 暗号化フォーム チケットを取得しています。
問題は、本番サーバーでは、fortknoxがセンチネルによって作成された Cookie を復号化できないことです。たとえそれらが同じマシン キーを持っていたとしてもです。両方のアプリが同じ物理ボックスで実行されている場合でも、機能しません。
ユーザーが fortknox をヒットすると、sentinel にリダイレクトされ、ログインし、Cookie が設定され、fortknox にリダイレクトされて、「データを検証できません」というメッセージが表示されます。
マシンキーは同じです - 各ページのマークアップにこの (厄介な!) コードのチャンクを含めるところまで行きました:
実行時に使用されているマシン キーがまったく同じであることを確認しました。
特にイライラするのは、これが開発サーバーとステージングサーバーで機能しており、本番環境でのみ失敗したことです. サーバー間の唯一の違いは、運用ボックスには Windows Update が頻繁にインストールされているのに対し、開発/ステージング ボックスには一部の更新プログラムが不足している可能性があることです。それ以外は同一です (同じイメージから複製され、同じセットアップ スクリプトを使用して作成されます)。
だから...同じサーバー。同じマシンキー。ASP.NET 4 は FormsAuthentication Cookie を設定します。ASP.NET 2 アプリは暗号化を解除できません。特定のサーバーでのみ発生するバグ。他の人では、それは機能しています。この時点で、私は完全に立ち往生しています...何かアイデアはありますか?
編集:ライブサーバーは最新のパッチレベルにまで引き上げられました。応募してみました
ログインアプリと fortknox アプリの両方に対して true と false の両方として。まだ運がない...
asp.net - .NET 3.5 および .NET 4 アプリケーション間で ASP.NET 共有 machineKey
2 つの ASP.NET アプリケーションがあります。1 つ目は .NET 3.5 アプリケーションで、2 つ目は .NET 4 アプリケーションです。
.NET 3.5 アプリケーションは、ユーザーの認証を担当します。
どちらも同じマシン キーを共有し、検証アルゴリズムとして SHA1 が指定されています ( http://www.asp.net/whitepapers/aspnet4/breaking-changes#0.1__Toc256770148の指示に従って) 。
ただし、2 番目のアプリケーションにログインできません。
最初のアプリケーションを .NET 4 に、または 2 つ目のアプリケーションを .NET 3.5 に変換すると、ログインできます。残念ながら、これは私の本番アプリケーションでは不可能です。
ここで何か不足していますか?
ありがとう、ベン
アップデート
.NET 3.5 アプリケーションで作成された場合、Cookie の長さが短くなるように見えます。これはニシンかもしれませんが、完全を期すために投稿すると思いました。
更新 2
この質問は、.Net 2.0 と .Net 4.0 アプリケーションの間でフォーム ベースの認証が機能しないという質問と回答がされています。