Как правильно использовать gss_import_name?
Вопрос
Я использую GSS_IMPORT_NAME на стороне клиента, используя GSS_C_NT_HOSTBADES_SERVICE, чтобы получить принцип, такой как Service/Server-Host@Realm.
Я так называю,
GSS_IMPORT_NAME (статус, "Сервис", GSS_C_HOSTBADE_SERVICE, output_name);
Но я получаю как принцип, обслуживание/местный machine@realm. На странице «Человек» я узнал, что он внутри его использует KRB5_SNAME_TO_PRINCIPAL, чтобы получить имя хоста, если это нулевое, это требует имени Localhost. Теперь мой вопрос: как передать правильное имя хоста (сервер-хост) GSS-API, чтобы создать принципал?
Решение
Я упустил из виду это. Чтобы получить принципал в форме 'Service/Server-Host@Realm' Я должен позвонить
gss_import_name (status, "Service@server-host", gss_c_hostbased_service, output_name);
вместо
GSS_IMPORT_NAME (статус, "Сервис", GSS_C_HOSTBADE_SERVICE, output_name);
Если имя хоста отсутствует, оно предполагает, что является местным именем хоста.