Как создать / проверить токен JWT с помощью JwtSecurityTokenHandler и Compression DEFLATE в ядре .net - PullRequest
0 голосов
/ 31 августа 2018

Я вижу, что в Java есть опция

JwtBuilder b = Jwts.builder()
.compressWith(CompressionCodecs.DEFLATE); 

Но в ядре .net я не знаю, как сгенерировать токен JWT, который сжимается с DEFLATE, подобно java. Я надеюсь, что кто-то может мне помочь.

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете создавать и применять собственные поставщики сжатия. Например, чтобы использовать Deflate сжатие:

using Microsoft.AspNetCore.ResponseCompression;
using System.IO;
using System.IO.Compression;

namespace CompressionApp
{
    public class DeflateCompressionProvider : ICompressionProvider
    {
        public string EncodingName => "deflate";
        public bool SupportsFlush => true;

        public Stream CreateStream(Stream outputStream)
        {
            return new DeflateStream(outputStream, CompressionLevel.Optimal);
        }
    }
}

Свойство EncodingName указывает формат сжатия, который поддерживает клиент. Этот формат содержится в заголовке Accept-Encoding в запросе к серверу, например:

Accept-Encoding: gzip, deflate, sdch, br

То есть этот провайдер будет работать, если клиент отправил значение deflate в запросе в заголовке Accept-Encoding.

Свойство SupportsFlush указывает, сбрасывается ли запись в поток.

Метод CreateStream () возвращает сам поток ответов после сжатия или фактического переноса в исходный поток ответов, который передается методу в качестве параметра. Для сжатия используется встроенный класс DeflateStream ().

Примените этого провайдера в методе ConfigureServices() класса Startup:

public void ConfigureServices(IServiceCollection services)
{
    services.AddResponseCompression(options =>
    {
        options.Providers.Add(new DeflateCompressionProvider());
    });
}

Чтобы добавить провайдера, вызывается метод options.Providers.Add().

...