none
非ドメイン認証ユーザーのみ認証したい RRS feed

  • 質問

  • お世話になります。表題の件について質問させていただきます。

    ASP.NET 2.0環境をイントラで運用しています。
    イントラはActiceDirectoryドメインで統括されています。

    現在はサイトのログインに際して、フォーム認証を行っているのですが、
    顧客よりドメイン認証済みユーザーについては認証レスでサイトにログインさせ、
    非認証ユーザー(※)のみフォーム認証を行うという機能を要請されています。
    (※:外部委託業者等、イントラ内の端末ではあるがローカルユーザーとしてログインしているユーザー)

    Webサーバーとイントラは同一ドメイン内ですので、
    認証済みユーザーの認証レスは統合Windows認証で実現可能なのですが、
    非認証ユーザーについてのみ認証させる方法がわかりません。

    非認証ユーザーを受け付けるため、IISのディレクトリセキュリティにて匿名アクセスを許可。
    認証済ユーザーを認証レスで受け付けるため、統合Windows認証を設定、またweb.configでのauthorization modeもWindowsを設定しました。

    しかし、IISで匿名アクセスを許可している場合、User.Identity.IsAuthenticatedが
    ドメイン認証済みユーザーであっても必ずfalseで返ってきてしまいます。

    IISの匿名アクセスを不許可にした場合、認証済みユーザーに関してはUser.Identity.IsAuthenticatedはtrueとなります。
    が、そうすると非認証ユーザーはフォーム認証ではなく、ドメイン認証のための認証ダイアログが表示されてしまいます。

    認証済みユーザーについては、統合Windows認証を受けた状態(IsAuthenticated=true)で、
    非認証ユーザーについては、未認証(IsAuthenticated=false)状態で受け付けるにはどうすればよいでしょうか。
    2010年3月11日 10:35

回答

  • 匿名認証を有効にしておくと、最初に匿名認証が有効になって、他の認証機構は
    働かないようです。といって、Windows 認証と Forms 認証を同時に有効にする
    こともできなそうです。

    IIS のバージョンが不明ですが、IIS6 であれば、以下のページが参考にならない
    でしょうか?

    Mixed Authentication- ASP.NET Forms and IIS 6.0 Windows Integrated
    http://blogs.claritycon.com/blogs/ryan_powers/archive/2007/06/12/3187.aspx

    他にも ASP.NET Windows Forms mixed などをキーワードに検索すると、いくつか
    参考になるページが見つかると思います。

    • 回答としてマーク 菊地俊介 2010年3月24日 9:15
    2010年3月11日 21:39

すべての返信

  • 匿名認証を有効にしておくと、最初に匿名認証が有効になって、他の認証機構は
    働かないようです。といって、Windows 認証と Forms 認証を同時に有効にする
    こともできなそうです。

    IIS のバージョンが不明ですが、IIS6 であれば、以下のページが参考にならない
    でしょうか?

    Mixed Authentication- ASP.NET Forms and IIS 6.0 Windows Integrated
    http://blogs.claritycon.com/blogs/ryan_powers/archive/2007/06/12/3187.aspx

    他にも ASP.NET Windows Forms mixed などをキーワードに検索すると、いくつか
    参考になるページが見つかると思います。

    • 回答としてマーク 菊地俊介 2010年3月24日 9:15
    2010年3月11日 21:39
  • 皆様、こんにちは。

    SurferOnWwwさん、回答ありがとうございます。

    Matz_asdfghjklさん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか? 疑問は解決しましたか?
    有用な情報と思われたため、SurferOnWwwさんの回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!

    2010年3月24日 9:17
  • 返答が遅くなってしまい大変申し訳ありません。

    ご推察いただいた通り、IISは6.0を使用しています。

    提示頂いたリンクで動作としては希望のものが実装できましたが、なぜか私の環境ではJScriptによる認証ページのロード(*)に5秒程度かかってしまいました。

    環境によるものだとは思うのですが、時間的余裕の無さと原因不明とが相まって、結局のところ、希望する動作は裏技というかハックじみた実装をしないと実現不可能な上、「どうせどっちにしてもIE限定だし」と開き直り

     

    1. サイトは匿名アクセス許可
    2. WScript.Shellから環境変数経由でユーザー名とドメイン名を取得
    3. ドメコンに問い合わせて該当ありなら認証とみなす、なければ自前ログインフォームで自前認証

     

    という手作業的な流れにしました。

    ご回答ありがとうございました。

    *通常のアクセスでは認証ダイアログが表示されるため、これを回避するためのスクリプトによるアクセス

    2010年3月24日 10:43