private IEndpointHandler GetEndpoint(WsFederationEndpointName endpointName, HttpContext context)
        {
            var mapping = mappings.LastOrDefault(x => x.Endpoint == endpointName);

            if (mapping != null)
            {
                logger.LogDebug("Mapping found for endpoint: {endpoint}, creating handler: {endpointHandler}",
                                endpointName, mapping.Handler.FullName);
                return(context.RequestServices.GetService(mapping.Handler) as IEndpointHandler);
            }

            logger.LogError("No mapping found for endpoint: {endpoint}", endpointName);

            return(null);
        }
        internal static IIdentityServerBuilder AddWsFederationEndpoint <T>(this IIdentityServerBuilder builder, WsFederationEndpointName endpoint)
            where T : class, IEndpointHandler
        {
            builder.Services.AddTransient <T>();
            builder.Services.AddSingleton(new WsFederationEndpointMapping {
                Endpoint = endpoint, Handler = typeof(T)
            });

            return(builder);
        }