Пример #1
0
        public HpkpMiddleware(RequestDelegate next, HpkpOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            this.next = next;

            List <string> parts = new List <string>();

            parts.AddRange(options.Pins);
            if (options.ReportingGroup != null)
            {
                string rgJson = JsonConvert.SerializeObject(options.ReportingGroup);
                this.reportingGroupJson = rgJson;
                parts.Add($"report-to {options.ReportingGroup.Group}");
            }
            parts.Add($"max-age={options.MaxAge}");
            if (options.IncludeSubdomains)
            {
                parts.Add("includeSubDomains");
            }
            headerValue = string.Join("; ", parts);
        }
Пример #2
0
        /// <summary>
        /// Adds middleware for using HPKP, which adds the Public-Key-Pins header.
        /// </summary>
        /// <param name="app">The <see cref="IApplicationBuilder"/> instance this method extends.</param>
        /// <param name="optionsAction">A delegate used for setting up the <see cref="HpkpOptionsBuilder"/>.</param>
        public static IApplicationBuilder UseHpkp(this IApplicationBuilder app, Action <HpkpOptionsBuilder> optionsAction)
        {
            HpkpOptionsBuilder optionsBuilder = new HpkpOptionsBuilder();

            optionsAction(optionsBuilder);
            HpkpOptions options = optionsBuilder.Build();

            return(app.UseMiddleware <HpkpMiddleware>(options));
        }
Пример #3
0
 internal HpkpOptionsBuilder()
 {
     options = new HpkpOptions();
 }