@pahandro
Студент, программист на C, JS

Как настроить авторизацию на Freeradius для captive portal с разделением на user и admin?

Всем привет, я пытаюсь настроить авторизацию freeradius для своего captive portal. Я использую:
в качестве WIFI роутера openwrt-22.03 + coova-chilli;
freeradius 3 + postgresql;

radius=# \dt
List of relations
Schema | Name | Type | Owner
--------+---------------+-------+----------
public | macs | table | postgres
public | nas | table | postgres
public | nasreload | table | postgres
public | radacct | table | postgres
public | radcheck | table | postgres
public | radgroupcheck | table | postgres
public | radgroupreply | table | postgres
public | radpostauth | table | postgres
public | radreply | table | postgres
public | radusergroup | table | postgres
(10 rows)

radius=# select * from radcheck;
id | username | attribute | op | value
-----+-------------------------+--------------------+----+-----------
326 | admin | Cleartext-Password | := | admin
327 | magicbook | Cleartext-Password | := | 33467784

radius=# select * from radusergroup;
id | username | groupname | priority
----+-----------+-----------+----------
8 | admin | admin | 0
9 | magicbook | user | 0
(2 rows)

radius=# select * from radgroupreply;
id | groupname | attribute | op | value
----+-----------+--------------+----+---------------------
1 | user | Service-Type | := | Framed-User
2 | admin | Service-Type | := | Administrative-User

radius=# select * from macs;
id | username | callingstationid
----+-----------+-------------------
25 | admin | 8C-7A-3D-90-07-08
27 | magicbook | 7C-C2-C6-1F-49-EE
(2 rows)

captive portal я создаю сам на языке js - https://github.com/Pavewleln/captive_portal. Сайт на html/css/js
также у меня есть свой сервер на Nodejs + expressjs, который обрабатывает все что приходит с сайта и направляет в freeradius и наоборот.

Не спрашивайте почему именно такие технологии, не я выбирал, так нужно.

У меня вроде как настроена самая простая авторизация, просто по username + password. У меня так же настроена авторизация дополнительно по MAC адресу, но в данный момент она отключена.
Настраивал по этому источнику - https://gist.github.com/nasirhafeez/6669b24aab0bda...

Я хочу настроить авторизацию для пользователя обычного и для админа. Я так понял нужно испольозвать группы, либо просто в radcheck класть еще аттрибут, по которму можно будет проверить. Но когда я кладу в radusergroup чтолибо, то username , к которму привязана данная группа, больше не будет входить в систему.

RADIUS request: {
[1] code: 'Access-Request',
[1] secret: 'testing123',
[1] attributes: [
[1] [ 'User-Name', 'magicbook' ],
[1] [ 'User-Password', '33467784' ],
[1] [ 'Calling-Station-Id', '8C-7A-3D-90-07-08' ]
[1] ]
[1] }
[1] RADIUS response: {
[1] code: 'Access-Reject',
[1] identifier: 137,
[1] length: 36,
[1] authenticator: ,
[1] attributes: { 'Reply-Message': 'Wrong Password' },
[1] raw_attributes: [ [ 18, ] ]
[1] }

Это пример что мне приходит с сайта, и что мне отвечает freeradius. ( Код можно посмотреть вот здесь https://github.com/Pavewleln/captive_portal (server/controllers/user.controller.ts)).

Я понимаю, что скорее всего не правильно настраиваю группы в freeradius, но я не понимаю как их тогда настроивать, как мне реализовать админа и обычного пользователя.

Как мне это исправить, как правильно настроить авторизацию, а также авторизацию админа и user.
Если есть другие варианты настройки, то я готов отказаться от этой.
Был бы безумно благодарен, если бы ктонибудь скинул пример похожего captive portal, вплане тоже на nodejs.
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы