Solved

Get UPN or email for logged in user in a .NET web application

Posted on 2009-07-08
1
970 Views
Last Modified: 2012-05-07
I have an ASP. NET web application that makes user of the user credentials of the logged in user. Currently it uses the SID which comes from

System.Security.Principal.WindowsIdentity.GetCurrent().User.Value

I need to get either the users UPN login or email address (as defined in active directory) instead of the SID. GetCurrent() returns an object of type WindowsIdentity; looking in the details for WindowsIdentity Members:

http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity%5Fmembers.aspx

I can't see anything that looks like it would give me either the UPN or email in there. How can I pull up that information to use, either by feeding the SID into some other function or calling something different in the first place.

System.Security.Principal.WindowsIdentity.GetCurrent().Name returns "DOMAIN\user", so that is not the answer.

0
Comment
Question by:DrStalker
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 12

Accepted Solution

by:
Hairbrush earned 500 total points
ID: 24811676
Try this, which requires System.DirectoryServices.


   private string CurrentUserEmail()
   {
		string tempCurrentUserEmail = null;
 
		//Returns the email address of the current user from Active Directory
 
		string sCurrentUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
 
		sCurrentUser = sCurrentUser.Substring(sCurrentUser.IndexOf("\\") + 1);
		DirectoryEntry Entry = new DirectoryEntry("LDAP://RootDSE");
		string sFQDN = System.Convert.ToString(Entry.Properties["defaultNamingContext"].Value);
		DirectoryEntry myDE = new DirectoryEntry("LDAP://" + sFQDN);
 
		DirectorySearcher mySearcher = new DirectorySearcher(myDE);
 
		mySearcher.Filter = "sAMAccountName=" + sCurrentUser;
		mySearcher.PropertiesToLoad.Add("Mail");
		try
		{
			SearchResult myresult = mySearcher.FindOne();
			tempCurrentUserEmail = System.Convert.ToString(myresult.Properties["Mail"][0]);
		}
		catch (Exception ex)
		{
			throw new ApplicationException("Could not establish an email address for user " + sCurrentUser);
		}
 
		return tempCurrentUserEmail;
	}

Open in new window

0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question