/// <summary>
        ///		Create a new <see cref="SessionSecurityToken"/>.
        /// </summary>
        /// <param name="principal">
        ///		The <see cref="ClaimsPrincipal"/> whose claims will be used to populate the token.
        /// </param>
        /// <param name="context">
        ///		A caller-defined context string.
        /// </param>
        /// <param name="endpointId">
        ///		The identifier of the end-point to which the token is scoped.
        /// </param>
        /// <param name="validFrom">
        ///		The time from which the token becomes valid.
        /// </param>
        /// <param name="validTo">
        ///		The time after which the token is no longer valid.
        /// </param>
        /// <returns>
        ///		The session security token.
        /// </returns>
        public override SessionSecurityToken CreateSessionSecurityToken(ClaimsPrincipal principal, string context, string endpointId, DateTime validFrom, DateTime validTo)
        {
            if (principal == null)
            {
                throw new ArgumentNullException(nameof(principal));
            }

            if (String.IsNullOrWhiteSpace(endpointId))
            {
                throw new ArgumentException("Argument cannot be null, empty, or composed entirely of whitespace: 'endpointId'.", nameof(endpointId));
            }

            ClaimsPrincipal compactedPrincipal = new ClaimsPrincipal(
                principal.Identities.Select(
                    identity => new ClaimsIdentity(
                        identity.Claims.Select(
                            claim => _mapper.CompactClaim(claim)
                            ),
                        identity.AuthenticationType,
                        _mapper.CompactClaimType(identity.NameClaimType),
                        _mapper.CompactClaimType(identity.RoleClaimType)
                        )
                    )
                );

            return(base.CreateSessionSecurityToken(compactedPrincipal, context, endpointId, validFrom, validTo));
        }