質問: IISでWindows認証を有効にして、ASP.NETアプリケーション上で`HttpContext.Current.User.Identity.Name`というAPIを叩くと、「クライアントがWindowsにログオンするときに使ったActiveDirectoryのアカウント」が取得できるらしいですが、この仕組みを知りたいです。 ※最終的にはJavaEEアプリケーションで同じことをやりたいと思っていますが、仕組みが分からないので、何が必要なのか、あるいは何か重要な機能が存在しないために実現不可(or困難)なのかも判断できない状況です。 そもそも、ブラウザとIISは、何か特殊なプロトコルでの通信をしているのでしょうか? それともあくまでHTTP上で解決できているのでしょうか? それらは、IE以外のブラウザもサポートしているのでしょうか? また、IISはActiveDirectoryとの通信はしていないのでしょうか?
回答: 私は詳しくないのですが、勉強もかねて、ここから情報を引っぱってきました。質問と回答がちゃんと対応できていない可能性もあります。 ASP.NETにおける認証と認定 > > ブラウザとIISは、何か特殊なプロトコルでの通信をしているのでしょうか? > > > WindowsのSAM(Security Account Manager)データベースに登録されたユーザー・アカウントをダイレクトにASP.NETアプリケーションの認証に用いるため独自のユーザー管理の仕組みを実装していない。 ユーザーが認証を受ける一連の仕組みについても、IISに実装されている認証プロトコル(基本認証、ダイジェスト認証、Windows統合認証)を利用するため、ASP.NETページへのアクセスが発生したときには、すでに認証を終えた状態になる。と書かれています。だから、2番目の回答と合わせて、特殊なプロトコルではなくて、HTTPじゃないでしょうか。詳細はリンクをたどってください。 > > それともあくまでHTTP上で解決できているのでしょうか? > > > Windows認証ではHTTPとして実装されている認証方式が利用されるため、ブラウザによって表示されるダイアログボックスで資格情報を入力する。と書かれています。 ただ、セキュリティに難があり、社外等へと公開するのはお勧めではなく、イントラネット・ユーザー向けだそうです。 > > IE以外のブラウザもサポートしているのでしょうか? > > > ここを見ると、特別なブラウザは必要としてないようです。 ASP.NETがもたらす次世代のWebプログラミング ActiveDirectoryとの連携 アクティブディレクトリとの通信は連携という意味でよろしかったですか? > > IISはActiveDirectoryとの通信はしていないのでしょうか? > > > こちらをご覧になっていただくといいのかなという気がいたします。 Active Directoryと連携できるIISの認証機能を理解 連携できると書いてあるだけで、今回のWindows認証で、確実にしてあるという判断まではできません。ただ、それを使ってユーザーやグループの制御が簡単にできると書いてありますんで、そういう制御がされていれば、連携していると逆算することは可能かと思われます。また、私は文章を読んで行って、これは連携しているな。と感じました。Active Directoryを使ってユーザーやグループの制御が簡単にできる、基本認証・ダイジェスト認証・Windows統合認証が利用されていると書かれていて、それらを利用しているからです。