/// <inheritdoc />
        public virtual MobileAppUser CreateServiceUser(ClaimsIdentity claimsIdentity, string authToken)
        {
            MobileAppUser user = new MobileAppUser(claimsIdentity);

            if (user.Identity.IsAuthenticated)
            {
                // Determine the user ID based on either the uid or NameIdentifier claims.
                string userIdValue = claimsIdentity.GetClaimValueOrNull(ClaimTypes.NameIdentifier) ?? claimsIdentity.GetClaimValueOrNull("uid");
                string prefix;
                string userId;
                if (!string.IsNullOrEmpty(userIdValue) &&
                    this.TryParseUserId(userIdValue, out prefix, out userId))
                {
                    user.Id = userIdValue;
                    user.MobileAppAuthenticationToken = authToken;
                }
                else
                {
                    // if no user name specified or the format is invalid,
                    // set to anonymous
                    SetAnonymousUser(user);
                }
            }

            return(user);
        }
        internal static MobileAppUser SetAnonymousUser(MobileAppUser user)
        {
            if (user != null)
            {
                user.Id = null;
                user.MobileAppAuthenticationToken = null;
            }

            return(user);
        }