ユーザーがインターネットまたはイントラネットからアプリケーションにアクセスしているかどうかを確認するにはどうすればよいですか?
IIS サーバー変数のソースとセキュリティについて非常に混乱しています。 http://msdn.microsoft.com/en-us/library/ms524602.aspx たとえば、Request.ServerVariables["AUTH_USER"] はリモート ユーザーに対して空白ですか?
また、http://msdn.microsoft.com/en-us/library/system.environment.userdomainname.aspxの Environment.UserDomainName に関するドキュメントで は、コンピュータ名にドメインと同じ名前を付けることで、これを操作できると思います。私がチェックしている名前
理想的には、私はただしたいです...
if ( [ ... user is not remote ... ] && Enironment.UserDomainName == "TargetLocalDomainName" )
var username = Environment.UserName;
PrepareLocalUserSession(username);
RedirectToHomePage();
}
//else
[... redirect to remote login page ...]
私の質問は、ユーザーがリモートの宛先から来ているかどうかをどのように判断するのですか? 可能であれば、IP チェックよりも簡単なものを使用することを強くお勧めします。
ありがとう
編集
上記の私のアプローチは非常に恐ろしいと思ったので、正気のアプローチを投稿したいと思いました
var hostAddress = System.Web.HttpContext.Current.Request.UserHostAddress;
bool localUser = hostAddress.StartsWith("192.") | hostAddress.StartsWith("10.") | hostAddress.StartsWith("172.") || HttpRequest.Current.Request.IsLocal;
string username = Request.ServerVariables["LOGON_USER"].split( new char[]{"/"})[0];
string domain = Request.ServerVariables["LOGON_USER"].split( new char[]{"/"})[1];
if( localUser && domain == "TargetLocalDomainName" ){
PrepareLocalUserSession(username);
RedirectToHomePage();
}
//else
[... redirect to remote login page ...]