LINUX.ORG.RU

Вопрос про клиент и сервер с аутентификацией по kerberos

 , , , ,


0

1

Здравствуйте. Решил написать приложение клиент серверное с аутентификацией по керберос. Взял пример сервера https://github.com/krb5/krb5/tree/master/src/appl/sample/sserver

И соответственно пример клиента https://github.com/krb5/krb5/tree/master/src/appl/sample/sclient

Соответственно от транслировал эти примеры и появились следующие вопросы.

1)Правильно ли я понимаю чтобы все корректно работало. Код сервера должен запускаться на машине сервера контроллера домена( там где keytab ) файл и kfc 2) код клиентской части может запускаться на любой машине клиенте домена правильно? 3) я слышал такую вещь что свой(взятый из примера) тестовый сервер и клиент kerberos, я должен где то в домене как то прописать, чтобы аутентификация проходила и тд. Если это так то как это сделать? Можно по шагам..

пожалуй, сначала стоит разобраться в предмете на уровне администратора, а потом уж разработчика.

контроллера домена

эта абракадабра применима к определённой системе ПО одного определённого производителя, и к керберос прямого отношения не имеет. И вообще ни к чему не имеет кроме вышеозначенного ПО.

Код сервера должен запускаться на

службы керберос как и клиенты общаются по сети и могут запускаться хоть где, если туда есть доступ по ней.

я слышал такую вещь

Можно по шагам

см. п1

kfc

полковник, ты?

mrjaggers
()

Код сервера должен запускаться на машине сервера контроллера домена

Сам подумай, кому бы нафиг сдался такой домен, где весь зоопарк сервисов обязательно надо держать в одной системе.

thesis ★★★★★
()

Работал с kerberos только с позиции админа, код примеров не смотрел

  1. Код сервера должен запускаться на машине сервера контроллера домена

Нет. У сервера в keytab’е должны быть ключи principal, выписанные на имя того хоста, где он работает. Например

HOST/$fqdn@$REALM
NFS/$fqdn@$REALM
HTTP/$fqdn@$REALM

$fqdn - hostname с доменом

$REALM - realm kerberos

Приставка, как ты уже понял, соответствует назначению. Т.е. тому, что реально будет использовать твой сервер

На стороне клиента аналогично. У него должен быть keytab с ключом principal’а, от имени которого он будет подключаться к серверу

Если клиент и/или сервер используют GSSD, то keytab’ы лично им давать не нужно, добавь в общесистемный /etc/krb5.keytab и перезапусти gssd

  1. код клиентской части может запускаться на любой машине клиенте домена правильно?

Да, ели там есть keytab с соответствующим ключом principal

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

Для стандартных нет. Нестандартные не использовал. Записи нужны для самого сервера kerberos, но не для твоего сервера, использующего kerberos.

Скорее всего, ты путаешь с каким-то service discovery. В любом случае, код у тебя, как-нибудь разребершься

router ★★★★★
()
Последнее исправление: router (всего исправлений: 4)

для работы клиент/сервис необходимы 3 условия:

  • компы и клиент и сервера должны быть в домене kerberos
  • на сервере для сервиса должен быть выгружен ключ в отдельный keytab который можно подгрузить в API через переменную среды если сервис совсем тупой
  • пользователь должен пройти аутенфикацию в kerberos и так же у него будет ключ, доступ на сервис идет по принципалу SERVICE@hostname

домен kerberos подразумевает kdc сервер ключей, пусть этой работой займутся специалисты, там всё очень сложно и есть нюансы!

https://github.com/krb5/krb5/tree/master/src/appl/sample

почитайте для чего придумали GSS-API, 2015 это год рождения - тогда очень похвально что дети интересуются такой тематикой!

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 7)
Ответ на: комментарий от router

А в случае если клиентом к моему серверу самописному является браузер firefox(настроенный на аутентификацию kerberos) , он мне пришлет учетные данные(билет) в мою программу при подключение к моему серверу по http://ip:port?

kold2015
() автор топика
Ответ на: комментарий от kold2015

Не знаю. С нестандартными портами не использовал. Возможно, порт придётся добавить в principal

https://bz.apache.org/bugzilla/show_bug.cgi?id=56701

HTTP/$fqdn:$port@$REALM

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)