2016-09-08 112 views
0

私は私たちのイントラネットで実行されている単一のページアプリケーションを持っています。ユーザーは、Windows認証(ドメインユーザー)によって認証されます。私はリクエストを送信するボタンをクリックすると、次のコードを持っているのaspxページへ($はhttp、角度を使用して):asp.netでwindows認証されたユーザーのユーザー名を取得するには?

 string result = "Unknown"; 
     var loggedOnUser = System.Security.Principal.WindowsIdentity.GetCurrent(); 
     if (loggedOnUser != null) { 
      int index = loggedOnUser.Name.LastIndexOf("\\", StringComparison.Ordinal) + 1; 
      result = loggedOnUser.Name.Substring(index); 
     } 
     var json = "{ \"User\" : \"" + result + "\"}"; 
     Response.Clear(); 
     Response.ContentType = "text/json"; 
     Response.Write(json); 
     Response.End(); 

このコードは、私だけで登録されたユーザの名前を与えますアプリケーションプール。それほど驚くべきことではありませんので、私はここで挑戦する必要がありますか?これを行う理由は、私はjavascriptでユーザ名を欲しいので、サーバへの他の呼び出しでパラメータとして送ることができるからです。 私はウェブを検索しており、誰もがログインしているユーザー名を取得することは大きなセキュリティ違反だと言います。そして私はそれを見る。しかし、サーバーコードに関連したやり方で回避策を講じることができますか?

提案がありますか?

ありがとうございます!あなたが他の呼び出しにパラメータとしてユーザー名を送信する場合は

+0

にこのようになった、誰か他の人にそのユーザ名を置き換えるから教育を受けたユーザーを停止することがある何ですか?あなたの認証は、各呼び出しで発生する必要があります。 –

+0

2番目の注記では、サイトの認証設定は何ですか?匿名の認証を許可していますか? –

+0

これは、セキュリティが問題ではないように、良いインテンションのユーザーを持つイントラネットアプリケーションです。ユーザーにドメイン名を入力するか、ログインフォームなどを作成して問題を解決するかどうかを尋ねることができます。私はちょうど私の同僚がWindowsドメインユーザーアカウントで一度だけログインできるようにしたいと思っています。 Windows認証はIISで設定されています.Anonymousアクセスは今では許可されていません。私はすべての内部とファイアウォールの背後にあるすべての後に、うまく動作するハックを取るよ。 –

答えて

1

は私がLoginクリック

protected void btnLogin_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      string UserName = ""; 
      string activeDomain = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString(); 
      string strName = HttpContext.Current.User.Identity.Name.ToString(); 


      if (strName == "") 
      { 
       UserName = activeDomain; 
      } 
      else 
      { 
       UserName = strName; 
      } 

      if (UserName == "") 
      { 
       lblMsg.Text = "Invalid Credentials. Please contact administrator!"; 
      } 
      else 
      { 
       LP.UserName = UserName; 
       DataSet dsUserName = LBLL.validate_user(LP); 
       if (dsUserName.Tables[0].Rows.Count > 0) 
       { 
        Session["UserName"] = dsUserName.Tables[0].Rows[0]["userName"].ToString(); 
        Session["entityUID"] = dsUserName.Tables[0].Rows[0]["entityUID"].ToString(); 
        Response.Redirect("~/index.aspx", false); 
       } 
       else 
       { 
        lblMsg.Text = "Invalid Credentials. Please contact administrator!"; 
       } 
      } 
     } 
     catch (Exception ex) 
     { 

     } 
    } 
関連する問題