Astra Linux Directory Client Core API  1.7.0
kadm5-wrapper.h
См. документацию.
1 
6 #ifndef ALD_KADM5_WRAPPER
7 #define ALD_KADM5_WRAPPER
8 
9 #include "common.h"
10 #include "ALDCore.h"
11 #include <list>
12 #include <memory>
13 
14 using namespace std;
15 
16 namespace ALD
17 {
23 #define KADM5_ITF_NAME "kadmin"
25 
27 #define KRB5_ITF_VERSION_1 1
28 #define KRB5_ITF_VERSION_2 2
30 
32 #define KRB5CCNAME "KRB5CCNAME"
33 
38 {
39 public:
40  string name;
41  unsigned int itf_version;
42  unsigned int min_life;
43  unsigned int max_life;
44  unsigned int min_length;
45  unsigned int min_classes;
46  unsigned int history_num;
47  unsigned int refcnt;
48  /* KRB5_ITF_VERSION_2 */
49  unsigned int max_fail;
50  unsigned int failcnt_interval;
51  unsigned int lockout_duration;
52  CALDKrbPolicy()
53  {
54  itf_version = KRB5_ITF_VERSION_2;
55  max_life = 0;
56  min_life = 0;
57  min_length = 1;
58  min_classes = 1;
59  history_num = 0;
60  refcnt = 0;
61  max_fail = 0;
62  failcnt_interval = 0;
63  lockout_duration = 0;
64  }
65 
69  void Assign(CALDKrbPolicy &policy)
70  {
71  name = policy.name;
72  max_life = policy.max_life;
73  min_life = policy.min_life;
74  min_length = policy.min_length;
75  min_classes = policy.min_classes;
76  history_num = policy.history_num;
77  refcnt = policy.refcnt;
78  max_fail = policy.max_fail;
79  failcnt_interval = policy.failcnt_interval;
80  lockout_duration = policy.lockout_duration;
81  }
82  virtual ~CALDKrbPolicy(){}
83 };
84 
86 #define ALD_KRB_SET_PW_MAX_LIFE 0x01
89 #define ALD_KRB_SET_PW_MIN_LIFE 0x02
91 #define ALD_KRB_SET_PW_MIN_LENGTH 0x04
93 #define ALD_KRB_SET_PW_MIN_CLASSES 0x08
95 #define ALD_KRB_SET_PW_HISTORY_NUM 0x10
97 
99 #define ALD_KRB_SET_PW_MAX_FAIL 0x20
100 #define ALD_KRB_SET_PW_FAIL_CNT_INT 0x40
102 #define ALD_KRB_SET_PW_LCK_OUT_DUR 0x80
104 
107 #define ALD_KRB_SET_PW_ALL ALD_KRB_SET_PW_MAX_LIFE | ALD_KRB_SET_PW_MIN_LIFE | ALD_KRB_SET_PW_MIN_LENGTH \
108  | ALD_KRB_SET_PW_MIN_CLASSES | ALD_KRB_SET_PW_HISTORY_NUM | ALD_KRB_SET_PW_MAX_FAIL \
109  | ALD_KRB_SET_PW_FAIL_CNT_INT | ALD_KRB_SET_PW_LCK_OUT_DUR
110 
111 typedef shared_ptr<CALDKrbPolicy> CALDKrbPolicyPtr;
112 
117 {
118 public:
119  string name;
120  unsigned int itf_version;
121  string policy;
124  time_t pw_expiration;
125  time_t mod_date;
126  time_t last_success;
127  time_t last_failed;
128  unsigned int fail_auth_count;
129  unsigned int attributes;
130  unsigned int max_life;
131  unsigned int max_renewable_life;
134  {
135  itf_version = KRB5_ITF_VERSION_2;
136  princ_expire_time = 0;
137  last_pwd_change = 0;
138  pw_expiration = 0;
139  mod_date = 0;
140  last_success = 0;
141  last_failed = 0;
142  fail_auth_count = 0;
143  attributes = 0;
144  max_life = 0;
145  max_renewable_life = 0;
146  }
147  virtual ~CALDKrbPrincipal(){}
148 };
149 
151 #define ALD_KRB_DISALLOW_ALL_TIX 0x00000040
154 #define ALD_KRB_REQUIRES_PWCHANGE 0x00000200
156 #define ALD_KRB_DISALLOW_TGT_BASED 0x00000004
158 
160 #define ALD_KRB_SET_POLICY 0x000800
161 #define ALD_KRB_SET_RANDKEY 0x001000
163 #define ALD_KRB_SET_PWCHANGE 0x002000
165 #define ALD_KRB_SET_DISALLOWTIX 0x004000
167 #define ALD_KRB_SET_MAXLIFE 0x008000
169 #define ALD_KRB_SET_MAXRLIFE 0x010000
171 #define ALD_KRB_CLR_FAILCNT 0x020000
173 #define ALD_KRB_SET_DISALLOWTGTBASED 0x040000
175 
178 #define ALD_KRB_STR_ACCOUNT_TYPE "ald_account"
180 #define ALD_KRB_STR_ACCOUNT_USER "user"
181 #define ALD_KRB_STR_ACCOUNT_SERVICE "service"
182 #define ALD_KRB_STR_ACCOUNT_INTERNAL "internal"
183 
185 typedef shared_ptr<CALDKrbPrincipal> CALDKrbPrincipalPtr;
186 
192 {
193 public:
194  virtual unsigned int GetItfVersion() = 0;
195 
196  // Connection
203  virtual void ConnectPassword(const string& user, const string& pwd, bool kadmin, bool savecred = false) = 0;
204 
211  virtual void ConnectKeytab(const string& user, const string& keytab, bool kadmin, bool savecred = false) = 0;
212 
217  virtual string ConnectCreds(const string& cache, bool kadmin) = 0;
218 
219  virtual bool IsConnected() = 0;
220 
224  virtual void Disconnect(bool keep_cred = false) = 0;
225 
226  // Policies
231  virtual void Policies(const string& expr, ald_string_list& pollist) = 0;
232 
236  virtual CALDKrbPolicyPtr PolicyGet(const string& polname) = 0;
237 
242  virtual void PolicyAdd(CALDKrbPolicyPtr Policy, unsigned int setmask) = 0;
243 
248  virtual void PolicyMod(CALDKrbPolicyPtr Policy, unsigned int setmask) = 0;
249 
253  virtual void PolicyDel(const string& policy) = 0;
254 
255  // Principals
260  virtual void Principals(const string& expr, ald_string_list& princlist) = 0;
261 
265  virtual CALDKrbPrincipalPtr PrincipalGet(const string& princname) = 0;
266 
272  virtual void PrincipalAdd(CALDKrbPrincipalPtr Principal, const string& pwd, unsigned int setmask) = 0;
273 
278  virtual void PrincipalMod(CALDKrbPrincipalPtr Principal, unsigned int setmask) = 0;
279 
283  virtual void PrincipalDel(CALDKrbPrincipalPtr Principal) = 0;
284 
288  virtual void PrincipalGetStrings(CALDKrbPrincipalPtr Principal) = 0;
289 
295  virtual void PrincipalSetString(CALDKrbPrincipalPtr Principal, const string &key, const string &val) = 0;
296 
301  virtual void PrincipalChangePwd(CALDKrbPrincipalPtr Principal, const string& pwd) = 0;
302 
303  // Keytab
309  virtual bool KeytabCheckPrincipal(const string& keytab, const string& princname) = 0;
310 
315  virtual void KeytabAddPrincipal(const string& keytab, const string& princname) = 0;
316 
321  virtual void KeytabRmPrincipal(const string& keytab, const string& princname) = 0;
322 
327  virtual void KeytabPrincipals(const string& keytab, ald_string_list& princlist) = 0;
328 
329  // States and properties
330  virtual string GetDefaultRealm() = 0;
331  virtual long GetLastError() = 0;
332  virtual bool IfReconnectNeeded() = 0;
333  virtual string GetUserId() = 0;
334 
335  virtual ~IALDKadm5Connection(){}
336 };
337 
338 typedef shared_ptr<IALDKadm5Connection> CALDKadm5ConnPtr;
339 
340 
346 {
347 public:
350 };
351 
352 typedef shared_ptr<IALDKadm5Wrapper> CALDKadm5WrapperPtr;
353 
355 #define ADM_KRB_USER_NAME "K/M"
356 
358 } // ALD
359 
360 #endif // ALD_KADM5_WRAPPER
ALD::CALDKrbPrincipal::pw_expiration
time_t pw_expiration
Время истечения действия пароля
Definition: kadm5-wrapper.h:124
ALD::IALDKadm5Connection::GetUserId
virtual string GetUserId()=0
Текущий аутентифицированный пользователь
ALD::IALDKadm5Connection::GetLastError
virtual long GetLastError()=0
Получение кода последней ошибки
ALD::CALDKrbPolicy::history_num
unsigned int history_num
Размер истории паролей
Definition: kadm5-wrapper.h:46
ALD::IALDKadm5Connection::ConnectKeytab
virtual void ConnectKeytab(const string &user, const string &keytab, bool kadmin, bool savecred=false)=0
Установка соединения с помощью файла ключей
ALD::IALDKadm5Connection::PrincipalGet
virtual CALDKrbPrincipalPtr PrincipalGet(const string &princname)=0
Получение принципала по имени
ALD::IALDKadm5Connection::ConnectCreds
virtual string ConnectCreds(const string &cache, bool kadmin)=0
Установка соединения с помощью кеша аутентификационных данных
ALD::IALDKadm5Connection
Абстрактный класс-интерфейс соединения с сервером Kerberos.
Definition: kadm5-wrapper.h:192
ALD::IALDKadm5Connection::Principals
virtual void Principals(const string &expr, ald_string_list &princlist)=0
Получение списка принципалов по шаблону
ALD::CALDKrbPrincipal::last_success
time_t last_success
Время последней успешной попытки аутентификации
Definition: kadm5-wrapper.h:126
ALD::CALDKrbPolicy::~CALDKrbPolicy
virtual ~CALDKrbPolicy()
Деструтор
Definition: kadm5-wrapper.h:82
ALD::CALDKrbPolicy::lockout_duration
unsigned int lockout_duration
Длительность блокировки
Definition: kadm5-wrapper.h:51
ALD::IALDKadm5Connection::PrincipalChangePwd
virtual void PrincipalChangePwd(CALDKrbPrincipalPtr Principal, const string &pwd)=0
Смена пароля принципала
KRB5_ITF_VERSION_2
#define KRB5_ITF_VERSION_2
Версия 2 протокола Kerberos.
Definition: kadm5-wrapper.h:29
ALD::IALDKadm5Wrapper::IALDKadm5Wrapper
IALDKadm5Wrapper(IALDCore &Core)
Конструктор
Definition: kadm5-wrapper.h:348
ALD::IALDKadm5Connection::IfReconnectNeeded
virtual bool IfReconnectNeeded()=0
Проверка нужна ли переустановка соединения
ALD::CALDKrbPrincipal::fail_auth_count
unsigned int fail_auth_count
Количество неуспешных попыток аутентификации
Definition: kadm5-wrapper.h:128
ALD::CALDKrbPrincipal
Класс принципала Kerberos.
Definition: kadm5-wrapper.h:117
ALD::CALDKrbPolicyPtr
shared_ptr< CALDKrbPolicy > CALDKrbPolicyPtr
Разделяемый указатель на политику паролей Kerberos CALDKrbPolicy.
Definition: kadm5-wrapper.h:111
ALD::CALDKrbPrincipal::strings
ald_string_map strings
Строковые атрибуты
Definition: kadm5-wrapper.h:132
ALD::CALDKadm5WrapperPtr
shared_ptr< IALDKadm5Wrapper > CALDKadm5WrapperPtr
Разделяемый указатель на интерфейс взаимодействия с Kerberos IALDKadm5Wrapper.
Definition: kadm5-wrapper.h:352
ALD::CALDKrbPrincipal::mod_date
time_t mod_date
Время модификации
Definition: kadm5-wrapper.h:125
ALD::CALDKrbPrincipal::name
string name
Имя принципала
Definition: kadm5-wrapper.h:119
ALD::CALDKrbPrincipal::last_failed
time_t last_failed
Время последней неуспешной попытки аутентификации
Definition: kadm5-wrapper.h:127
KADM5_ITF_NAME
#define KADM5_ITF_NAME
Имя интерфейса Kerberos.
Definition: kadm5-wrapper.h:24
ALD::CALDKrbPolicy::failcnt_interval
unsigned int failcnt_interval
Время между попытками ввода при неверном вводе
Definition: kadm5-wrapper.h:50
ALD::CALDKrbPolicy::itf_version
unsigned int itf_version
Версия протокола Kerberos.
Definition: kadm5-wrapper.h:41
ALD::IALDCore
Абстрактный класс IALDCore - основной интерфейс клиента Astra Linux Directory, с помощью которого вып...
Definition: ALDCore.h:242
ALD::IALDKadm5Connection::PolicyDel
virtual void PolicyDel(const string &policy)=0
Удаление политики паролей по имени
ALD::CALDKrbPolicy::min_length
unsigned int min_length
Минимальная длина
Definition: kadm5-wrapper.h:44
ALD::IALDKadm5Connection::GetItfVersion
virtual unsigned int GetItfVersion()=0
Версия протокола Kerberos.
ALD::IALDKadm5Connection::PolicyAdd
virtual void PolicyAdd(CALDKrbPolicyPtr Policy, unsigned int setmask)=0
Создание политики паролей
ALD::CALDKrbPrincipal::itf_version
unsigned int itf_version
Версия протокола Kerberos.
Definition: kadm5-wrapper.h:120
ALD::IALDKadm5Connection::PolicyMod
virtual void PolicyMod(CALDKrbPolicyPtr Policy, unsigned int setmask)=0
Модификация политики паролей
ALD::CALDKadm5ConnPtr
shared_ptr< IALDKadm5Connection > CALDKadm5ConnPtr
Разделяемый указатель на интерфейс соединения с сервером Kerberos.
Definition: kadm5-wrapper.h:338
ALD::IALDKadm5Connection::PrincipalSetString
virtual void PrincipalSetString(CALDKrbPrincipalPtr Principal, const string &key, const string &val)=0
Устанвока/удаление строкового атрибута принципала
ALD::IALDKadm5Connection::IsConnected
virtual bool IsConnected()=0
Проверка установлено ли соединение
ALD::ald_string_map
map< string, string > ald_string_map
MAP строка => строка
Definition: ALDUtils.h:164
ALD::CALDKrbPolicy::refcnt
unsigned int refcnt
Счетчик использования политики
Definition: kadm5-wrapper.h:47
ALD::IALDKadm5Connection::PolicyGet
virtual CALDKrbPolicyPtr PolicyGet(const string &polname)=0
Получение политики паролей по имени
ALD::IALDKadm5Connection::KeytabAddPrincipal
virtual void KeytabAddPrincipal(const string &keytab, const string &princname)=0
Добавление ключей принципала в файл ключей
ALD::CALDKrbPolicy::name
string name
Имя политики
Definition: kadm5-wrapper.h:40
ALD::IALDKadm5Connection::ConnectPassword
virtual void ConnectPassword(const string &user, const string &pwd, bool kadmin, bool savecred=false)=0
Установка соединения с помощью пароля
ALD::IALDKadm5Connection::KeytabCheckPrincipal
virtual bool KeytabCheckPrincipal(const string &keytab, const string &princname)=0
Проверка ключей принципала в файле ключей
ALD::IALDKadm5Connection::PrincipalGetStrings
virtual void PrincipalGetStrings(CALDKrbPrincipalPtr Principal)=0
Получение строковых атрибутов принципала
ALD::IALDKadm5Wrapper
Абстрактный класс-интерфейс взаимодействия с Kerberos.
Definition: kadm5-wrapper.h:346
ALD::IALDKadm5Connection::KeytabPrincipals
virtual void KeytabPrincipals(const string &keytab, ald_string_list &princlist)=0
Получение списка принципалов из файла ключей
ALD::IALDKadm5Connection::Disconnect
virtual void Disconnect(bool keep_cred=false)=0
Завершение соединения с сервером
ALD::CALDKrbPrincipal::max_life
unsigned int max_life
Максимальное время действия билета
Definition: kadm5-wrapper.h:130
ALD::CALDKrbPrincipal::princ_expire_time
time_t princ_expire_time
Максимальное время действия учетной записи
Definition: kadm5-wrapper.h:122
ALD::CALDKrbPrincipal::policy
string policy
Имя политики паролей
Definition: kadm5-wrapper.h:121
common.h
Основной заголовочный файл, содержащий необходимый минимум предварительных объявлений и включений дру...
ALD::CALDKrbPolicy
Класс политики паролей Kerberos.
Definition: kadm5-wrapper.h:38
ALD::CALDKrbPolicy::Assign
void Assign(CALDKrbPolicy &policy)
Копирование свойств с другой политики
Definition: kadm5-wrapper.h:69
ALD
Пространство имен основного интерфейса Astra Linux Directory.
Definition: action-definitions.h:10
ALD::IALDKadm5Connection::PrincipalDel
virtual void PrincipalDel(CALDKrbPrincipalPtr Principal)=0
Удаление принципала
ALD::CALDKrbPrincipal::~CALDKrbPrincipal
virtual ~CALDKrbPrincipal()
Деструктор
Definition: kadm5-wrapper.h:147
ALD::IALDKadm5Connection::KeytabRmPrincipal
virtual void KeytabRmPrincipal(const string &keytab, const string &princname)=0
Удаление ключей принципала из файла ключей
ALD::CALDKrbPrincipal::max_renewable_life
unsigned int max_renewable_life
Максимальное возобновляемое время действия билета
Definition: kadm5-wrapper.h:131
ALD::CALDKrbPolicy::min_classes
unsigned int min_classes
Минимальное количество классов символов
Definition: kadm5-wrapper.h:45
ALD::IALDKadm5Wrapper::getConnection
virtual CALDKadm5ConnPtr getConnection()=0
Создание экземпляра соединения с сервером Kerberos CALDKadm5ConnPtr.
ALDCore.h
Объявление основного интерфейса клиента Astra Linux Directory и необходимых для него типов и интерфей...
ALD::IALDKadm5Connection::GetDefaultRealm
virtual string GetDefaultRealm()=0
Kerberos REALM по умолчанию
ALD::IALDKadm5Connection::PrincipalAdd
virtual void PrincipalAdd(CALDKrbPrincipalPtr Principal, const string &pwd, unsigned int setmask)=0
Создание принципала
ALD::CALDInterface
Базовый класс интерфейса
Definition: ALDCore.h:84
ALD::CALDKrbPrincipal::last_pwd_change
time_t last_pwd_change
Время последней смены пароля
Definition: kadm5-wrapper.h:123
ALD::IALDKadm5Connection::~IALDKadm5Connection
virtual ~IALDKadm5Connection()
Деструктор
Definition: kadm5-wrapper.h:335
ALD::CALDKrbPolicy::max_fail
unsigned int max_fail
Максимальное количество неверных вводов пароля до блокировки
Definition: kadm5-wrapper.h:49
ALD::CALDKrbPrincipalPtr
shared_ptr< CALDKrbPrincipal > CALDKrbPrincipalPtr
Разделяемый указатель на принципал Kerberos CALDKrbPrincipal.
Definition: kadm5-wrapper.h:185
ALD::CALDKrbPolicy::min_life
unsigned int min_life
Минимальное время действия пароля
Definition: kadm5-wrapper.h:42
ALD::ald_string_list
list< string > ald_string_list
Список строк
Definition: ALDUtils.h:152
ALD::IALDKadm5Connection::PrincipalMod
virtual void PrincipalMod(CALDKrbPrincipalPtr Principal, unsigned int setmask)=0
Модификация принципала
ALD::CALDKrbPolicy::max_life
unsigned int max_life
Максимальное время действия пароля
Definition: kadm5-wrapper.h:43
ALD::CALDKrbPrincipal::attributes
unsigned int attributes
Вектор атрибутов
Definition: kadm5-wrapper.h:129
ALD::IALDKadm5Connection::Policies
virtual void Policies(const string &expr, ald_string_list &pollist)=0
Получение списка политик паролей по шаблону