0

これは簡単だと思ったのですが、理解できないようです。ユーザー名とパスワードを要求する ac# フォームが必要です。次に、そのユーザー アカウントが SQL データベースにログインできるかどうかを SQL に問い合わせて、ユーザーを検証します。ユーザー名とパスワードを接続文字列に入れるだけの基本的な方法を試しましたが、うまくいきませんでした。「ユーザーはアクセスできません」というエラーメッセージが表示されました。パスワードが正しく引き継がれていないためです。これは私が持っているものです:

Web.config:

<connectionStrings>
  <add name="connectionname" 
     connectionString="Data Source=myserver;Initial Catalog=mydb;Integrated Security=SSPI;" 
     providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
   <identity impersonate="true" />
   ....

私の背後にあるコード:

 try
 {
    SqlConnection con = new SqlConnection();
    con.ConnectionString = "Data Source=myserver;Initial Catalog=mydb;User ID=" + useridTextBox.Text + ";Password=" + passwordTextBox.Text;
    con.Open();
    con.Close();
    //successful login
    validDBLogin = true;
    pageMsg.Text = "Successful AD and DB login";
  }
  catch (Exception err) //if error Opening, catch the error, and display
  {
    pageMsg.Text = "No access to the Database";
    pageMsgAdditional.Text = err.Message.ToString();
    validDBLogin = false;
   }

これを行う方法があるはずですか?私の目標は、SQL で認証を行うことです。ユーザーがアクセスしたい場合は、データベースへのアクセスを許可するだけです。また、この方法でセキュリティを統合して、どのユーザーがどの SQL クエリを実行したかを追跡できるようにしたいと考えています。(違いがあるかどうかはわかりませんが、これらのアカウントには Active Directory を使用しており、これまでのところ問題はありません)。

前もって感謝します!

4

2 に答える 2

2

SQL Server での SSPI 統合を誤解しています。

接続文字列 1 (SSPI):

Data Source=myserver;Initial Catalog=mydb;Integrated Security=SSPI;

これにより、接続しようとしているプロセスを所有するユーザーの資格情報を確認するよう SQL Server に指示されます。この場合、ASP.Net アプリケーション プール ID は「Active Directory ユーザー」のコンテキストです。

接続文字列 2 (ユーザー/パスワード):

Data Source=myserver;Initial Catalog=mydb;User ID=xxxx;Password=yyyy;

これにより、SQL Server は、ユーザー ID "xxxx" を SQL Server ログインとして認証するように指示されます。

これは、SQL Server が認証するドメイン ユーザー "xxxx" を示しません。「Domain\xxxx」の形式を使用している場合でも同様です。あなたはできません。

于 2013-04-22T21:24:49.327 に答える
1

Active Directory ID のユーザー名パスワードを渡すことはできません。Web サイトが実行されているアプリケーション プールの ID を常に使用します。

于 2013-04-22T23:04:37.043 に答える