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); }