QA@IT

ASP.NET MVC Win認証とフォーム認証の混在について

6221 PV

毎度お世話になっております。
ASP.NET MVC5でWebアプリを開発中(言語はC#2017)ですが、下記要件を満たす方法につきご教示頂ければと存じます。

・WebサーバはWin2012R2(IIS8.5)
・urlはwww.hogeco.jpとする。
・社内からアクセスした場合、Windows認証でログインさせる。Windowsログインアカウントを取得し、ページ上に表示する。
・社外からアクセスした場合、社員IDとパスワード(それぞれWindowsログインとは別に払い出したもの)を
 入力するフォームを表示。ASP.NET Identityを用いて認証。

コントローラーでクライアントのIPアドレスを取得し、プライベートIP(192.168.~)か否かで社内外を切り分ける方法は
出来そうなのですが、IISの認証の設定で、Windows認証とフォーム認証を有効にした状態で外部からアクセスしますと、
『認証が必要』のダイアログが表示されてしまいます。

そもそも上記の様な仕様は成立しないのでしょうか。

以上、何卒よろしくお願い致します。

回答

そもそも上記の様な仕様は成立しないのでしょうか。

ASP.NET で Winsows 認証と Forms 認証を併用するというのは、少なくとも Microsoft としてサポートはしていないようなので、ウラワザ的なことをして実現する他なさそうです。

ウラワザ的なことというのは、例えば以下の記事に書いてあるようなことです。

Mixing Forms and Windows Security in ASP.NET
https://msdn.microsoft.com/en-us/library/ms972958.aspx

IIS 7.0 Two-Level Authentication with Forms Authentication and Windows Authentication
http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/

多分これらは質問者さんのケースでは適用できないのではないかと思いますが、ググって調べた限りでは他に適当な記事が見つかりませんでしたので、参考例として書いておきました。

asp.net mix windows forms authentication などをキーワードにググるといろいろヒットしますので質問者さんの方でもやってみてください。

他には、Winsows / Forms 認証を併用せず、Forms 認証のみを使って、ユーザー情報は Active Directory から取得して認証を行うという方法もあります。

ASP.NET からの Active Directory ドメイン サービス認証
https://msdn.microsoft.com/ja-jp/library/ms180890.aspx

How To: ASP.NET 2.0 でプロトコル トランジションと制約付き委任を使用する方法・・・図1参照
https://msdn.microsoft.com/ja-jp/library/ms998355.aspx

ただし、上記の記事は、ASP.NET Identity ではなく、従前の FormsAuthenticationModule を使う Form 認証を対象としていますので注意してください。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。