none
IIS5.x(Windows統合認証)→SQLサーバ(混合モード) RRS feed

  • 質問

  • お世話になっております。

     

    PC1(WindowsXP-IIS)、PC2(WindowsXP+SQL2000:混合モード)をhogeドメインに参加させ、

    PC1で仮想フォルダ(認証モード:Windows統合認証)を作成し、ASP(vbscript)にて、

    PC2のデータベースに接続を試みています。

    ※PC1の仮想フォルダにアクセスするユーザは、「hoge\testuser」

     

    PC2のSQL2000の「セキュリティ-ログイン」に、hoge\testuserを追加し、

    対象となるDBの、「ユーザ」に追加し、

    適切な権限(各テーブルへselect,insert,update,delete,DRI)を与えました。

     

    接続文字部分

     

       sConnct = "Data Source=PC2_XP; Initial Catalog=HOGEHOGE_DATABASE;  Integrated Security=SSPI;"
        '接続
        Set objConn = CreateObject("ADODB.Connection")
        objConn.CommandTimeout = 600
        objConn.ConnectionTimeout = 600
        objConn.Provider = "SQLOLEDB"
        objConn.ConnectionString = sConnct
        objConn.Open

    ■結果

     エラー タイプ
     Microsoft OLE DB Provider for SQL Server (0x80004005)
     ユーザー '(null)' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。

     

    となりました。

     

    ■実験1-SQL認証は可能か?

    SQLサーバ認証用のユーザ(TESTSQLUSER)を作成して、

    *sConnct = "server=MTIXP-OTANI; DataBase=HOGEHOGE_DATAVASE;User ID=TESTSQLUSER; PASSWORD=PASS"

    正しく動作しました。

     

    ■実験2-PC1にSQL2000をインストールして、Windows統合認証を行う

    * sConnct = "Data Source=PC1; Initial Catalog=HOGEHOGE_DATABASE;  Integrated Security=SSPI;"

    正しく動作しました。
    ※もちろん、pc1のSQL2000にhoge\testuserを追加しております。

     

    ■実験3-PC2にIISをインストールして、PC1のSQLへ統合認証を行う

    正しく動作しました。??????????????

     

    PC1(IIS)→PC2(SQL2000)は、×

    PC2(IIS)→PC1(SQL2000)は、○です。

     

    原因が突き止められませんでした。

    XPについているファイアフォールなど無効となっておりますし、同じ環境に見えますが、

    同じ環境と思われるのですが、だめです。

     

    なにか原因と思われる箇所があればご教授をお願いします。

     

     

     

     

     


     

     


     

    • 移動 Wang Huang 2012年10月2日 1:45 (移動元:Internet Information Services 5.x, 6.0 - 全般)
    2007年12月21日 9:00

回答

  •  奥主 洋 - MSFT さんからの引用

    思うにHOP数減らすことが必要なんでしょうね。COM+のコンポーネントを使うとか、条件を逸脱してしまうでしょうがIIS6のアプリケーションプールを使うとか。

     

    COM+ は有効な手段だと思いますが、Application Pool の account 変更は有効な手段だと思いません。

    Classic ASP なんですよね?ASP.NET ではなく。

     

    Classic ASP の場合、基本的には匿名 account で動作するはずです。

    その上で Windows 統合認証等で偽装していればその偽装 account で動作します。

     

    ただ、偽装 account の場合、その偽装 account が kerberos で認証されたものであり、なおかつその computer が AD 上で認証を委任されている存在でなければなりません。

     

    SQL Server で Kerberos 認証を使用する方法

     

    なんか、当初の現象ですが、Windows 統合認証を有効にしているようなので、勝手に Windows 統合認証で得た impersonate token を使って接続しにいっているように思えるのですが。

     

    Windows 統合認証を無効化してやれば接続できそうな気がしますが、それだったら COM+ server application を作成し、そちらの起動 account を SQL server 接続用の account にしてやる方が security 面で遥かにいいですね。

    2008年1月3日 6:50

すべての返信

  • 自己レスです。

     

    原因は、ダブルホップ偽装ができないことに問題がありそうなのは、わかりました。

    しかしながら、解決策がみつかりません。

     

     

    2007年12月25日 5:46
  • 自己レスです。

     

    ドメインに参加しているユーザマシンのブラウザから、WEBサーバ(統合認証)へアクセスするとき

    このときのバックグラウンドでは、チャレンジ・レスポンスが行われてドメインサーバとやり取りし認証をうける。

    WEBサーバは、資格情報を受取り、認証したユーザで偽装しながら動作する。

    WEBサーバは、別PCのSQLサーバ(Windows統合認証)にて接続を試みるが、

    資格情報しかもっていないので(もしくわハッシュされたパスワード?)、チャレンジレスポンスができないので、

    セカンダリトークン(NTAUTHORITY\ANONYMOUS アカウント)の資格情報を使用して認証を行うない

    「ユーザー(null)のログインに失敗しました。・・・」と表示されることがわかりました。

     

    ASP.NETの場合、指定したドメインユーザに偽装がおこなえ、そのユーザをSQLサーバのログオンユーザに

    登録して解決できそうですが、ASPの場合は不可能なのでしょうか。

     

    IIS(統合Windows認証)→SQL(SQL認証)が無難なのでしょうか?

     

     

     

    2007年12月27日 8:45
  • シングルサインオンを実装しようとしているのですかね。。。XPですね。。。

     

    これ参考になりませんでしょうか。
    http://support.microsoft.com/kb/176377/JA/

     

    昔 混乱した時にこのツールをよく使いました。
    http://support.microsoft.com/kb/229694/JA/

     

    思うにHOP数減らすことが必要なんでしょうね。COM+のコンポーネントを使うとか、条件を逸脱してしまうでしょうがIIS6のアプリケーションプールを使うとか。

     

    お役に立つといいんですが。

    2008年1月1日 2:32
  •  奥主 洋 - MSFT さんからの引用

    思うにHOP数減らすことが必要なんでしょうね。COM+のコンポーネントを使うとか、条件を逸脱してしまうでしょうがIIS6のアプリケーションプールを使うとか。

     

    COM+ は有効な手段だと思いますが、Application Pool の account 変更は有効な手段だと思いません。

    Classic ASP なんですよね?ASP.NET ではなく。

     

    Classic ASP の場合、基本的には匿名 account で動作するはずです。

    その上で Windows 統合認証等で偽装していればその偽装 account で動作します。

     

    ただ、偽装 account の場合、その偽装 account が kerberos で認証されたものであり、なおかつその computer が AD 上で認証を委任されている存在でなければなりません。

     

    SQL Server で Kerberos 認証を使用する方法

     

    なんか、当初の現象ですが、Windows 統合認証を有効にしているようなので、勝手に Windows 統合認証で得た impersonate token を使って接続しにいっているように思えるのですが。

     

    Windows 統合認証を無効化してやれば接続できそうな気がしますが、それだったら COM+ server application を作成し、そちらの起動 account を SQL server 接続用の account にしてやる方が security 面で遥かにいいですね。

    2008年1月3日 6:50
  • 皆様、ご返事ありがとうございます。

     

    > Windows 統合認証を無効化してやれば接続できそうな気がしますが、それだったら COM+ server application を作成し、

    > そちらの起動 account を SQL server 接続用の account にしてやる方が security 面で遥かにいいですね。

     

    この文面の「COM+ server applicationを作成し、そちらの起動 accountを・・・」くだりですが、どのような意味でしょうか。

    SQLに接続する前に、偽装を行ってからアクセスするとういうことでしょうか?

     

     

    2008年1月4日 2:16
  •  TAKAKUN さんからの引用

    この文面の「COM+ server applicationを作成し、そちらの起動 accountを・・・」くだりですが、どのような意味でしょうか。

     

    VB とかで、COM+ として実行可能な DLL を作成し、COM+ に server application として登録してやるということです。

    2008年1月4日 14:38
  • こんにちは、フォーラム オペレータの鈴木裕子です。

     

    ちゃっぴ さん、

    参考になる投稿をありがとうございました!

     

    TAKAKUN さん、

    ちゃっぴ さんの回答が参考になる内容でしたので、回答済みチェックをつけさせて頂きました。

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    問題解決につながる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてくださいね

     

    TAKAKUN さんは設定を元に戻すこともできますので、もし不適切でしたら、修正をお願いします。

     

    また何かありましたら、フォーラムの情報を参考になさってください!

    お待ちしております

     

    2008年1月9日 4:22
    モデレータ