locked
ディレクトリに対して基本認証をプログラムで動的に設定する方法 RRS feed

  • 質問

  • 下記事項をプログラムで動的に実行したいのですが...
    1.Windows ユーザーを作成する(以下HOGE)
    2.「HOGE」に対してコンソール・ログインを不可にする
    3.ディレクトリを作成する(以下ABC).# もちろん、Webからアクセスできるディレクトリ
    3.「ABC」に対して(IISの)基本認証を設定する
    4.「ABC」の基本認証に対して「HOGE」のみにアクセス許可を与える


    ちなみに、バージョンは IIS 6 です。
    (ActiveDirectory は使用していません)

    もちろん、IIS マネージャからではなく .NET プログラムから前述の設定を行いたいのですが
    IIS の API を探そうにも、どこを探したらよいのか分からず、迷子になっています...orz
    # IIS で調べると違う内容ばかりが多量に HIT してしまって...
    # Apache ならテキストいじるだけでできるのに...

    どなたか、キーとなる API や探す方法をご存知でしたら教えてください

    よろしくお願いいたします m(__)m





    • 移動 Wang Huang 2012年10月2日 1:29 (移動元:Internet Information Services 5.x, 6.0 - 全般)
    2009年6月13日 7:36

回答

すべての返信

  • こんにちは、nagino です。

    この手の情報は、日本語では非常に少ないかと思います。
    また、IIS 7 からは設定が XML(テキスト)ですので、今後情報が増えるようなこともあまり期待できないかと思います。

    私も以前挑戦しかけて、時間の都合もあって断念、手順書作成して運用次第としました。
    そのため以下動作確認していないドキュメントレベルでのお話になってしまいますので、間違い等もあるかと思います。
    その点ご留意ください。

    IIS 6 の設定をプログラムから行うとすると、以下の 4 種類のいずれかを使うことになるかと思います。
     -1.ADSI
        http://msdn.microsoft.com/en-us/library/ms525389.aspx
     -2.WMI
        http://msdn.microsoft.com/en-us/library/ms525309.aspx
     -3.System.DirectoryServices
        http://msdn.microsoft.com/en-us/library/ms525791.aspx
     -4.ABO
        http://msdn.microsoft.com/en-us/library/ms525112.aspx
    上記 URL にサンプルコードのリンクがあります。

    今回 .NET ということですので、-3.System.DirectoryServices が良いかと思います。
    が、Active Directory を使用していない環境で使用できるかどうかは未確認ですので、その点ご注意ください。
    一応 System.DirectoryServices のリファレンスは以下にあります。
    http://msdn.microsoft.com/ja-jp/library/system.directoryservices.aspx

    あとは、WMI や ADSI という手もあります。
    WMI は .NET から扱えたかと思います。

    WMI ですと、リファレンスは以下にあります。
    http://msdn.microsoft.com/en-us/library/ms524972.aspx(仮想ディレクトリの作成)
    http://msdn.microsoft.com/en-us/library/ms525005.aspx(仮想ディレクトリの設定)

    IIsWebVirtualDir.AppCreate2 あたりで仮想ディレクトリを作成し、IIsWebVirtualDirSetting の AuthFlags を設定することになるかと思います。

    ADSI はちょっと怪しいですが、以下かと思います。
    http://msdn.microsoft.com/en-us/library/ms526026.aspx

    ざっくりですが、以上ご参考になれば幸いです。


    MCITP(Database Developer/Database Administrator)
    2009年7月1日 23:53
  • こんにちは、フォーラムオペレータの高橋春樹です。

    naginoさん、いつもお世話になっております。
    アドバイスありがとうございました。

    ShigeruNakagakiさん、初めまして。
    MSDNフォーラムのご利用ありがとうございます。

    naginoさんから、アドバイスを頂いたと思うのですが、疑問点の解決に繋がりましたでしょうか?
    今回naginoさんから頂いた情報を皆さんと共有する為に、回答マークをつけさせてもらいました。
    不適切な場合は、回答マークを外す事もできますので、そのときはよろしくお願いします。


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年7月16日 8:20
  • 今さらですが、

    IIS自身の設定を動的に変更しなくても、
    ISAPI FilterやHTTP Moduleで独自の認証機構を用意して、自身で持っている認証ルールに従ってアクセス権を制御してしまえばいいのでは?
    この場合、Windowsアカウントの作成も不要になるかも。というのも「Apache ならテキストいじるだけでできるのに...」と書かれているので、これはきっと.htpasswdのことで、間違っても/etc/passwdを操作していないでしょうし。
    2009年7月20日 0:24