2016-09-30 8 views
0

私はDefault.aspxページで.NET Framework 4.0でテストWebアプリケーションを作成しました。asp.net 4.0のネットワークIDにアクセスする方法

string username = Page.User.Identity.Name; 

とweb.configファイルでWindows認証モードを有効にします:私はちょうどので、私は背後のdefault.aspxコード内のコードを以下のが、私はF5キーを押してアプリケーションを実行すると、空白値を取得書いたユーザーのOアクセスネットワークIDを望みます

Console.WriteLine(Environment.UserName); 

私は、Webアプリケーション内のすべての設定手順をしないのです:

<authentication mode="Windows" /> 

はその後、私はコンソールアプリケーションで次の、私は私のネットワークIDを取得することができるよ試してみました。

おかげ

答えて

0

は、これは私がユーザー情報を取得し、あまりにもADグループをチェックすることを使用し、生産コードです。

変数を作成してクラスを初期化し、必要なメソッドにアクセスして、AD \ Network情報を返します。

using System.DirectoryServices.AccountManagement; 
using System.Security.Principal; 

public class IsUserInRole 
{ 

public static bool IsInGroup(string groupName) 
{ 
    var myIdentity = GetUserIdWithDomain(); 
    var myPrincipal = new WindowsPrincipal(myIdentity); 
    return myPrincipal.IsInRole(groupName); 
} 


public bool IsInGroup(List<string> groupNames) 
{ 
    var myIdentity = GetUserIdWithDomain(); 
    var myPrincipal = new WindowsPrincipal(myIdentity); 

    if (groupNames.Any(@group => myPrincipal.IsInRole(@group) == true)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 

} 

public static WindowsIdentity GetUserIdWithDomain() 
{ 
    WindowsIdentity myIdentity = WindowsIdentity.GetCurrent(); 
    return myIdentity; 
} 

public static string GetUserId() 
{ 
    var id = GetUserIdWithDomain().Name.ToString().Split("\\"); 
    return id(1); 
} 


public static string GetUserDisplayName() 
{ 
    var id = GetUserIdWithDomain().Name.ToString().Split("\\"); 

    var dc = new PrincipalContext(ContextType.Domain, id(0)); 
    var adUser = UserPrincipal.FindByIdentity(dc, id(1)); 
    return adUser.DisplayName; 

} 


} 

編集1

は、あなたのコメントは、そのあなたがあなたのweb.configファイル

<system.web> 
    <identity impersonate="true" /> 
    ... 
    </system.web> 

に以下を追加する必要があります。そしてまた、IISでサイトの\に行き戻ってユーザーを再Gvenアプリケーションを次に承認に移動し、匿名ユーザーを無効にし、ASP.Net偽装とWindows認証を有効にする

enter image description here

編集2あなたがアクセスのために挑戦している、これはあなたが正しい権限が

+0

私は、Page_Loadイベント 「Response.Writeを( 『ユーザ名:』の行以下の書いた設定されていないことを意味し

+ WindowsIdentity.GetCurrent()。Name); ' IISでホストされたWebサイト。 ユーザー名:IIS APPPOOL \ TestWeb 代わりに、ドメイン名とネットワークIDが表示されるはずです。 ユーザー名:mydomain \ mynetowrkid – Sukhjeevan

+0

どうしましたか?また、あなたのIISセットアップは何ですか?サイト上のユーザーの認証。私は匿名認証無効 ASP.NET偽装無効 が認証無効 Windows認証が を有効にし、今web.configファイルで<認証モード=「Windowsの」/> フォームIIS に以下のなかったWindows認証を取得するには、この後 –

+0

私がウェブサイトを閲覧すると、Windows Securityのポップアップが表示され、Windowsの資格情報を尋ねます。私は細部のログイン私の窓を試みたが、メッセージ次に行く: ユーザー名:MYDOMAIN \ mynetworkid パスワード:私のWindowsパスワード HTTPエラー401.1 - Webアプリケーションがサーバーに保持されている不正な – Sukhjeevan

関連する問題