JwtBearer Auth с хранилищем ключей Azure

Я хотел использовать хранилище ключей Azure для хранения ключа, который будет использоваться для создания подписи для JwtTokens, сгенерированных моим API.

Для аутентификации токена JWT я использую Microsoft.AspNet.Authentication.JwtBearer и настроил его так:

app.UseJwtBearerAuthentication(options =>
            {
                options.TokenValidationParameters.IssuerSigningKey = this.tokenAuthKey;
                options.TokenValidationParameters.ValidAudience = this.tokenOptions.Audience;
                options.TokenValidationParameters.ValidIssuer = this.tokenOptions.Issuer;

                options.TokenValidationParameters.ValidateSignature = true;

                options.TokenValidationParameters.ValidateLifetime = false;

                options.TokenValidationParameters.ClockSkew = TimeSpan.FromMinutes(0);
            });

Итак, как вы видите, эта конфигурация требует предоставления полного ключа с частной частью (свойство IssureSigningKey). Он отлично работает, когда мой ключ хранится незащищенным в файле XML, где-то в файловой системе, и я просто загружаю его во время запуска приложения. Однако при попытке сохранить ключ в хранилище ключей Azure (AKV) возникает проблема. Поскольку AKV позволяет вывести только открытую часть ключа, я изо всех сил стараюсь заставить все это работать вместе.

Я обнаружил, что класс TokenValidationParameters имеет свойство делегата, которое я могу использовать, чтобы предоставить свой собственный метод валидатора, который будет использовать методы шифрования / дешифрования AKV, чтобы определить, действительна ли подпись.

Проблема в том, что я не могу определить, как указать свой собственный метод, который будет генерировать часть подписи токена JWT, поэтому для конфигурации Microsoft.AspNet.Authentication.JwtBearer не потребуется закрытый ключ.

Мой вопрос: возможно ли как-то указать мой собственный метод, который создает подпись для сгенерированного токена JWT в конфигурации JwtBearer или во время создания токена с использованием JwtSecurityTokenHandler.CreateToken?

0 ответов

Другие вопросы по тегам