Проверка билета службы Kerberos с помощью gss-api

Я хочу сделать программу для авторизации трафика с помощью gss-api / kerberos. Пока я могу связаться с SSOS и получить сервисный билет. Если у пользователя нет TGT, я делаю что-то похожее на kinit в моем коде.

Мой код заканчивается тем, что у пользователя в кеше есть как TGT, так и сервисный билет. Следующий метод будет читать токен, отправленный сервером.

majorStatus = gss_unwrap (&minorStatus, 
                              inContext, 
                              &inputBuffer, 
                              &outputBuffer, 
                              &encrypted, 
                              NULL;

Сейчас outputBuffer пуст. То есть, я сам ничего не передаю. Должна ли я быть?

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

Как проверить это с помощью GSSAPI? Я знаю такие методы, как wrap / unwrap. Где в клиенте хранится ключ сеанса службы? После того, как я получу билет на сервисном сервере, как мне его проверить?

Прошу прощения, если я путаю некоторые концепции, но я впервые работаю с таким сложным API.

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


person Rafael Saraiva    schedule 12.04.2014    source источник


Ответы (1)


I want to contact another server(the service) who will check my ticket and if valid allow me to send traffic through him.

Вы используете функции GSS-API init_security_context (на стороне клиента) и accept_security_context () на стороне службы. См. http://web.mit.edu/kerberos/krb5-devel/doc/appdev/gssapi.html для получения информации и, возможно, проверьте некоторые примеры в Интернете (http://docs.oracle.com/cd/E19683-01/816-1331/sampleprogs-1/index.html)

С GSS вы фактически не трогаете билеты. Используя эти функции, вы можете установить безопасное соединение между клиентом и сервисом (функции используют билеты, например), и с этого момента вы можете продолжить.

person BlueMoon93    schedule 04.05.2014