public static User CreateUser(ClaimsIdentity claimsIdentity)
 {
     return(new User
     {
         Id = Int32.Parse(claimsIdentity.FindFirstValue(ClaimTypes.NameIdentifier)),
         Email = claimsIdentity.FindFirstValue(ClaimTypes.Email),
         FullName = claimsIdentity.FindFirstValue(ClaimTypes.GivenName),
         IsVerified = Boolean.Parse(claimsIdentity.FindFirstValue(ClaimTypeIsVerified)),
         TimeStamp = ClaimsMapper.GetTimeStamp(claimsIdentity.FindFirstValue(ClaimTypes.Version))
     });
 }
        private static ClaimsIdentity CreateIdentity(ClaimsMapper claimsMapper, string authenticationType)
        {
            IList <Claim> claims = new List <Claim>();

            claims.Add(new Claim(ClaimTypes.NameIdentifier, claimsMapper.Id, null, claimsMapper.Issuer, claimsMapper.OriginalIssuer));
            claims.Add(new Claim(ClaimTypes.Email, claimsMapper.Email, null, claimsMapper.Issuer, claimsMapper.OriginalIssuer));
            claims.Add(new Claim(ClaimTypes.GivenName, claimsMapper.FullName, null, claimsMapper.Issuer, claimsMapper.OriginalIssuer));
            claims.Add(new Claim(ClaimTypes.Sid, claimsMapper.Sid, null, claimsMapper.Issuer, claimsMapper.OriginalIssuer));
            claims.Add(new Claim(ClaimTypes.Version, claimsMapper.Version, null, claimsMapper.Issuer, claimsMapper.OriginalIssuer));
            claims.Add(new Claim(ClaimTypeIsVerified, claimsMapper.IsVerified, null, claimsMapper.Issuer, claimsMapper.OriginalIssuer));
            claims.Add(new Claim(ClaimTypeAvatarUrl, claimsMapper.AvatarUrl, null, claimsMapper.Issuer, claimsMapper.OriginalIssuer));

            return(new ClaimsIdentity(claims, authenticationType));
        }
        private static AccessToken CreateToken(IOwinContext owinContext, User user, ClaimsMapper claimsMapper)
        {
            var identity = CreateIdentity(claimsMapper, OAuthDefaults.AuthenticationType);
            var ticket   = new AuthenticationTicket(identity, CreateProperties(user));
            var context  = new AuthenticationTokenCreateContext(owinContext,
                                                                Startup.OAuthOptions.AccessTokenFormat,
                                                                ticket);

            return(new AccessToken
            {
                Type = OAuthDefaults.AuthenticationType,
                Value = context.SerializeTicket()
            });
        }