Как работает подписание токена? (Неверная ошибка подписи) - PullRequest
1 голос
/ 09 марта 2020

Справочная информация: Я запускаю интеграционные тесты внутри. NET Базового веб-API, который использует Auth0 для авторизации на моих конечных точках. Мои токены, возвращаемые из Auth0, содержат «недопустимую подпись», когда я вставляю их в верификатор JWT.io.

У меня возникают проблемы с пониманием того, в какой момент моего потока авторизации мой токен подписывается, кто его подписывает и как он подписывается.

Я запустил новый API разработки в Auth0 («My Dev API»), который использует HS256 Signing Al go для подписи моих токенов. Насколько я понимаю, в HS256 есть один секретный ключ, который использует знаковые токены (секрет подписи), и поток между компьютерами выглядит следующим образом:

Я отправляю некоторые учетные данные в Auth0, например:

clientID: exampleID
clientSecret: exampleSecret
audience: https://myaudience.com
grant_type: client_credentials

Auth0 отправляет мне обратно токен доступа:

access_token: exampleToken1234

Когда я вставляю этот токен в JWT.io, мне говорят, что токен имеет недопустимую подпись.

В моем. NET приложении у меня есть какая-то настройка, которая выполняет какую-то настройку:

   static void AddAuthentication(IServiceCollection services)
       {
           services.AddAuthentication(options =>
           {
               options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
               options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    }).AddJwtBearer(options =>
        {
              options.TokenValidationParameters = new TokenValidationParameters
         {
               ValidIssuer = auth0Config.Domain,
               ValidAudience = auth0Config.Audience,
               IssuerSigningKey = new 
                        SymmetricSecurityKey(Encoding.UTF8.GetBytes(auth0Config.SigningSecret))
         };
     });
 }

Может кто-нибудь объяснить, должен ли я добавить код для подписи этого токена, если он уже получен подписано (и если да, то почему JWT.io сообщает мне, что есть недопустимая подпись) и что на самом деле делает приведенная выше конфигурация?

Кроме того, необходимо ли создавать автономный Dev API или я могу отправлять запросы на авторизацию к готовому интерфейсу управления api?

Заранее спасибо!

1 Ответ

2 голосов
/ 09 марта 2020

Мои токены, возвращаемые из Auth0, содержат «недопустимую подпись», когда я вставляю их в верификатор JWT.io.

https://jwt.io не могу проверьте подпись, если вы не вставите секрет (который использовался для подписи токена) в поле в правом столбце под заголовком «ПРОВЕРЯТЬ ПОДПИСЬ». Поэтому сначала вставьте туда секрет, а затем вставьте жетон в левую колонку. Порядок важен!

enter image description here

У меня возникли проблемы с пониманием того, в какой точке моего потока авторизации подписывается мой токен кто его подписывает и как он подписывается.

AuthO создает для вас подписанный токен, когда пользователь проходит аутентификацию в соответствии с представленными учетными данными. Для создания токена сначала создаются заголовок и полезная нагрузка, затем подпись рассчитывается как ха sh заголовка, полезной нагрузки и секрета. Читайте об основах здесь

Может кто-нибудь объяснить, если я должен добавить код для подписи этого токена, если он прибывает уже подписан (и если так, почему JWT .io сообщает, что есть недействительная подпись)

Вам не нужна дополнительная подпись, вы получаете подписанный токен от AuthO.

и что на самом деле делает приведенная выше конфигурация?

Приведенная выше конфигурация сообщает вашему API, что используется аутентификация на основе JWT и что входящий запрос должен быть проверен на действительный JWT в соответствии с настроенными параметрами (проверка издателя, аудитории и подписи на основе значений из auth0Config)

...