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 
323  // States and properties
324  virtual string GetDefaultRealm() = 0;
325  virtual long GetLastError() = 0;
326  virtual bool IfReconnectNeeded() = 0;
327  virtual string GetUserId() = 0;
328 
329  virtual ~IALDKadm5Connection(){}
330 };
331 
332 typedef shared_ptr<IALDKadm5Connection> CALDKadm5ConnPtr;
333 
334 
340 {
341 public:
343  virtual CALDKadm5ConnPtr getConnection() = 0;
344 };
345 
346 typedef shared_ptr<IALDKadm5Wrapper> CALDKadm5WrapperPtr;
347 
349 #define ADM_KRB_USER_NAME "K/M"
350 
352 } // ALD
353 
354 #endif // ALD_KADM5_WRAPPER
Абстрактный класс-интерфейс соединения с сервером Kerberos.
Definition: kadm5-wrapper.h:191
shared_ptr< IALDKadm5Wrapper > CALDKadm5WrapperPtr
Разделяемый указатель на интерфейс взаимодействия с Kerberos IALDKadm5Wrapper.
Definition: kadm5-wrapper.h:346
time_t last_failed
Время последней неуспешной попытки аутентификации
Definition: kadm5-wrapper.h:127
list< string > ald_string_list
Список строк
Definition: ALDUtils.h:152
Объявление основного интерфейса клиента Astra Linux Directory и необходимых для него типов и интерфей...
Абстрактный класс-интерфейс взаимодействия с Kerberos.
Definition: kadm5-wrapper.h:339
unsigned int lockout_duration
Длительность блокировки
Definition: kadm5-wrapper.h:51
unsigned int refcnt
Счетчик использования политики
Definition: kadm5-wrapper.h:47
unsigned int fail_auth_count
Количество неуспешных попыток аутентификации
Definition: kadm5-wrapper.h:128
#define KADM5_ITF_NAME
Имя интерфейса Kerberos.
Definition: kadm5-wrapper.h:24
string policy
Имя политики паролей
Definition: kadm5-wrapper.h:121
virtual ~IALDKadm5Connection()
Деструктор
Definition: kadm5-wrapper.h:329
unsigned int itf_version
Версия протокола Kerberos.
Definition: kadm5-wrapper.h:41
virtual ~CALDKrbPolicy()
Деструтор
Definition: kadm5-wrapper.h:82
unsigned int history_num
Размер истории паролей
Definition: kadm5-wrapper.h:46
Класс политики паролей Kerberos.
Definition: kadm5-wrapper.h:37
virtual ~CALDKrbPrincipal()
Деструктор
Definition: kadm5-wrapper.h:147
time_t pw_expiration
Время истечения действия пароля
Definition: kadm5-wrapper.h:124
IALDKadm5Wrapper(IALDCore &Core)
Конструктор
Definition: kadm5-wrapper.h:342
unsigned int max_fail
Максимальное количество неверных вводов пароля до блокировки
Definition: kadm5-wrapper.h:49
Базовый класс интерфейса
Definition: ALDCore.h:83
unsigned int max_life
Максимальное время действия билета
Definition: kadm5-wrapper.h:130
unsigned int attributes
Вектор атрибутов
Definition: kadm5-wrapper.h:129
unsigned int max_renewable_life
Максимальное возобновляемое время действия билета
Definition: kadm5-wrapper.h:131
unsigned int max_life
Максимальное время действия пароля
Definition: kadm5-wrapper.h:43
map< string, string > ald_string_map
MAP строка => строка
Definition: ALDUtils.h:164
unsigned int itf_version
Версия протокола Kerberos.
Definition: kadm5-wrapper.h:120
shared_ptr< CALDKrbPolicy > CALDKrbPolicyPtr
Разделяемый указатель на политику паролей Kerberos CALDKrbPolicy.
Definition: kadm5-wrapper.h:111
time_t princ_expire_time
Максимальное время действия учетной записи
Definition: kadm5-wrapper.h:122
unsigned int min_classes
Минимальное количество классов символов
Definition: kadm5-wrapper.h:45
unsigned int min_life
Минимальное время действия пароля
Definition: kadm5-wrapper.h:42
time_t last_success
Время последней успешной попытки аутентификации
Definition: kadm5-wrapper.h:126
ald_string_map strings
Строковые атрибуты
Definition: kadm5-wrapper.h:132
string name
Имя политики
Definition: kadm5-wrapper.h:40
Класс принципала Kerberos.
Definition: kadm5-wrapper.h:116
shared_ptr< IALDKadm5Connection > CALDKadm5ConnPtr
Разделяемый указатель на интерфейс соединения с сервером Kerberos.
Definition: kadm5-wrapper.h:332
Основной заголовочный файл, содержащий необходимый минимум предварительных объявлений и включений дру...
void Assign(CALDKrbPolicy &policy)
Копирование свойств с другой политики
Definition: kadm5-wrapper.h:69
shared_ptr< CALDKrbPrincipal > CALDKrbPrincipalPtr
Разделяемый указатель на принципал Kerberos CALDKrbPrincipal.
Definition: kadm5-wrapper.h:185
unsigned int min_length
Минимальная длина
Definition: kadm5-wrapper.h:44
#define KRB5_ITF_VERSION_2
Версия 2 протокола Kerberos.
Definition: kadm5-wrapper.h:29
time_t last_pwd_change
Время последней смены пароля
Definition: kadm5-wrapper.h:123
unsigned int failcnt_interval
Время между попытками ввода при неверном вводе
Definition: kadm5-wrapper.h:50
time_t mod_date
Время модификации
Definition: kadm5-wrapper.h:125
Абстрактный класс IALDCore - основной интерфейс клиента Astra Linux Directory, с помощью которого вып...
Definition: ALDCore.h:241
string name
Имя принципала
Definition: kadm5-wrapper.h:119