/// <summary>
        /// Gets an existing IPrincipal object from the cache.
        /// </summary>
        /// <param name="token">
        /// Token identifying an existing cached entity.
        /// </param>
        /// <returns>A cached IPrincipal object</returns>
        public override IPrincipal GetPrincipal(IToken token)
        {
            SecurityCacheItem item      = GetSecurityCacheItem(token);
            IPrincipal        principal = item == null ? null : item.Principal;

            InstrumentationProvider.FireSecurityCacheReadPerformed(SecurityEntityType.Principal, token);

            return(principal);
        }
        /// <summary>
        /// Gets an existing Profile object from the cache.
        /// </summary>
        /// <param name="token">
        /// Token identifying an existing cached entity.
        /// </param>
        /// <returns>A cached Profile object</returns>
        public override object GetProfile(IToken token)
        {
            SecurityCacheItem item    = GetSecurityCacheItem(token);
            object            profile = item == null ? null : item.Profile;

            InstrumentationProvider.FireSecurityCacheReadPerformed(SecurityEntityType.Profile, token);

            return(profile);
        }
        /// <summary>
        /// Gets an existing IIdentity object from the cache.
        /// </summary>
        /// <param name="token">
        /// Token identifying an existing cached entity.
        /// </param>
        /// <returns>A cached IIdentity object</returns>
        public override IIdentity GetIdentity(IToken token)
        {
            SecurityCacheItem item     = GetSecurityCacheItem(token);
            IIdentity         identity = item == null ? null : item.Identity;

            InstrumentationProvider.FireSecurityCacheReadPerformed(SecurityEntityType.Identity, token);

            return(identity);
        }