Ошибка Kerberos «Билет еще не действителен» при проверке сервисного билета на Node.js ServerLinux

Ответить
Anonymous
 Ошибка Kerberos «Билет еще не действителен» при проверке сервисного билета на Node.js Server

Сообщение Anonymous »

Я использую библиотеку Kerberos node.js, чтобы проверить билеты на обслуживание Kerberos. Моя настройка включает в себя:
  • Active Directory Windows Server в сети.
  • Server , который проверяет билеты на обслуживание, полученные от клиентов для извлечения имен. Билет на сервере: < /p>

    Код: Выделить всё

    Error: Unspecified GSS failure. Minor code may provide more information: Ticket not yet valid
    < /code>
    
     клиент-код (работает нормально) < /h2>
    import Kerberos from "kerberos";
    
    const service = "HTTP/schoolie-server.schooliead.local@SCHOOLIEAD.LOCAL";
    
    Kerberos.initializeClient(service, {}, (err, client) => {
    if (err) throw err;
    
    client.step('', (err, token) => {
    if (err) throw err;
    
    console.log(btoa(token)); // Base64-encoded service ticket
    // Send this ticket to the server
    });
    });
    < /code>
    
     код сервера (ошибка пробросов) < /h2>
    import Kerberos from "kerberos";
    
    // Point Kerberos to the keytab file
    process.env.KRB5_KTNAME = "/path/to/http.keytab";
    
    const serviceTokenFromClient = "base64TokenFromClientBeingSendOverHTTP";
    
    const kerberosServer = await Kerberos.initializeServer("HTTP@schoolie-server.schooliead.local");
    const actualToken = btoa(serviceTokenFromClient);
    
    const responseToken = await kerberosServer.step(actualToken);
    console.log(responseToken);
    
    if (kerberosServer.username) {
    console.log(kerberosServer.username);
    }
    < /code>
    
     Дополнительный контекст < /h2>
    
     SPN был настроен с использованием этого вопроса о переполнении стека и работает < /li>
     Ошибка возникает только при проверке билета на сервере Linux.w32tm
    ), поскольку сервер Linux не соединяется с доменом. Тем не менее, сравнение системных часов показывает почти идентичные времена:

    Linux: Sat 13 сентября 05:04:39 CEST 2025
  • Windows: суббота, 13 сентября 2025 5:04:40 PM

    />
    Вопрос < /h2>
    Почему я получаю < /p>

    Код: Выделить всё

    Ticket not yet valid
    < /code>
    При проверке билета службы в библиотеке Kerberos < /code> node.js, и как я могу его разрешить, несмотря на синхронизированные часы? Машина < /strong> < /p>
    
    [*][DateTime]::UtcNow.toString("u")
    -2025-09-14 19: 44: 53Z
  • Код: Выделить всё

    new Date().toString()
    - Sun 14 Sep 14 2025 12:44:53 GMT -0700 (Pacific Daylight)
на машине Linux
  • Код: Выделить всё

    date -u - Sun 14 сентября 07:44:53 UTC 2025 
    new Date().toString() - Sun 14 Sep 14 2025 21:44:53 GMT+0200 (Центральное европейское летнее время)
Я не эксперт Kerberos, как Grawity , но для меня это должно работать.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -node-js-s
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»