2009-07-23 9 views
0

私の職場では、いくつかの古典的なASPとASP.NETアプリケーションがあります。ASP.NETアプリケーションのASPログインページ

これらのアプリケーションはすべて、1つのメインアプリケーションによって処理されるシングルサインオンモードで統合されていますが、これらのアプリケーションはすべて統合されています。

メインアプリケーションは従来のASPにあり、最初にユーザーIDとパスワードを確認した後、セッション変数にユーザーIDを格納します。セッション変数は、他のすべてのASPおよびASP.NETページで有効な認証ユーザーとして使用されます。 (DOT NETのページではセッションブリッジを使用します)

これはクラシックASPの認証方法ですか? (私は古典的なASPを多く知っていません)

私がこのセットアップに導入された時から、私はこの設定が完璧かどうか心配し始めましたか?同じことを処理するためのより良い方法はありますか?

同じログインページで従来のaspとDOT NETの両方で認証することは可能でしょうか?

+0

DOTを投げる – JoshJordan

答えて

3

私の古典的なASPアプリケーションでは、私はいつも大まかにあなたが何を記述しているのですか?ユーザーがログインページを使用すると、ユーザーの資格情報が認証され、ユーザーIDとその他の関連情報がセッションCookieに格納されます。

このアプローチの潜在的な欠陥は、理論的にユーザーがセッションCookieをローカルで変更できるため、アプリケーションにリクエストを行う際にセキュリティ上のリスクがある別のユーザーであるように見えることです。私が通常これを回避する方法は、セッションCookieにユーザー情報を保存するときに、この情報といくつかの非公開の情報に基づいて認証コードを生成することです(特に私は情報の文字列を作成し、SHA256でハッシュします)。

次に、認証コードが予期されたコードと一致せず、ユーザーが起動した場合に、Cookieが変更された場合は、認証コードを定期的に再チェックしてそのユーザーの予想コードと一致するかどうか確認できます。

同じようなことを行う際の主な問題は、ASPとASP.Netの両方で、指定された出力文字列に対して同じハッシュ値を与えるハッシングアルゴリズムの実装を見つけることです。

ASP.Netのために、私は返すhttp://msdn.microsoft.com/en-us/library/system.security.cryptography.sha256managed.aspxをSystem.Security.Cryptography.SHA256Managed使用していた間、64文字の16進は、小文字の文字列をエンコードとして個人的に私が結果を返すの古典的なASP http://www.frez.co.uk/vb6.aspxためFrezの無料SHA256の実装を使用しました結果は同じだが大文字である(少しの作業が伴う - 以下の例を参照)。したがって、必要なのは単純なケースの変換呼び出しだけです。

Function SHA256(ByVal input As String) 
    Dim bytInput() As Byte 
    Dim bytHash() As Byte 
    Dim objBuilder As New StringBuilder 
    Dim objCrypto As New SHA256Managed 
    Dim intI As Integer 

    bytInput = Encoding.ASCII.GetBytes(input) 
    objCrypto = New SHA256Managed() 
    bytHash = objCrypto.ComputeHash(bytInput) 

    For intI = 0 To UBound(bytHash) 
     objBuilder.Append(Hex(bytHash(intI))) 
    Next 

    Return objBuilder.ToString() 
End Function 
+0

おかげでRob ...これは確かに非常に良いsugession ..残念ながら私はあなたの投票に十分な信用を持っていない。 私はまだこの質問に答えていません... 同じログインページで従来のaspとDOT NETの両方を認証することはできますか? ASP/DOT NETのいずれか。 クラシックaspでの認証とは、セッション変数の作成のみを意味します。通常のASP.NETフォーム認証と一緒にasp.netログインページからクラシックaspにセッション変数を追加するようなものではありません。このようにして、私のDOT NETのページを確実に安全に確保できます。 - Raja –

+0

VBScript用のSHA256ライブラリはhttp://www.frez.co.uk/vb6.aspxに移行されました。ページ上にアンカーやIDはありませんので、#リンクはありません。 SHAを検索します。 – lambacck

+0

リンクを適切に更新しました。私は既にそれを使用しているプロジェクトでソースに組み込んでいるので、そこからダウンロードする必要があったので、しばらくお待ちください – RobV

1

WindowsドメインのユーザーIDを使用してPCにログインしている場合は、完全に統合されたシングルサインオンの場合はおそらくこのオプションが最適です。 ASPとASP.NetはWindows統合認証をサポートしているため、この情報をセッション変数に格納する必要はありません。

+0

お時間をありがとう。私はそれに同意する。しかし、Windows認証モードは使用できません。他のオプションをお勧めしますか? –

0

windows authを使用できない場合は、セッション変数とともにCookieを使用します。こうすることで、ユーザーにCookieを送信した場合にユーザーをログインさせることができます。これは、asp.netがログインを処理する方法です。

あなたのクッキーが...でも、JavaやPHPで

を仕事ができるしかし、最善の解決策は、従来のASPを取り除くことであろう。しかし、私はこれができないことを知っている...

関連する問題