Search code examples
c#asp.net-web-apiasp.net-identity

Get claim email address


I want to access my email address via Claim inside Identity

I tried accessing as:

var email = User.Identity.GetClaimsByType("emailaddress").ToString();
var email = User.Identity.GetClaimsByType("email").ToString();
var email = User.Identity.GetClaimsByType("Email").ToString();

But none of these works, it always return null, how can I get it?

The claim is:

{http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress: [email protected]}

Solution

  • C# offers a Claim Types Enum to represent the claim type url. The code would look like this:

    var email = User.Identity.GetClaimsByType(ClaimTypes.Email)
        .Select(x => x.Value).FirstOrDefault().ToString();
    

    If you support custom Claim Types in your identity, you could use LINQ.

    var claimValue = User.Identity.Claims
        .FirstOrDefault(claim => claim.Type.Contains(<my custom claim type>));