Как дать разрешения клиенту при использовании соединения TLS? - PullRequest
0 голосов
/ 13 апреля 2020

Я использую TLS для аутентификации клиентов, заходящих на мой сервер.

Я хотел бы настроить доступ на основе ролей, чтобы при входе в систему они могли получать доступ только к определенной информации, основанной на их роль.

Каков наилучший способ выполнить sh это? Можете ли вы указать роль при создании сертификата клиента? Вы делаете это, основываясь на каком-то другом атрибуте клиента?

Спасибо!

1 Ответ

2 голосов
/ 13 апреля 2020

Вы могли бы поместить информацию о роли в сертификат (как собственное расширение X.509v3), но затем, если вам когда-либо понадобится изменить их роль, вам нужно отозвать и повторно выдать сертификат , Это похоже на головную боль.

Лучше было бы рассматривать «Аутентификацию» и «Авторизацию» отдельно. Использовать сертификат как «Аутентификация»; ie сертификат подтверждает, что они являются пользователями, перечисленными в DN и SAN, затем вы просматриваете это DN в службе / базе данных «Авторизация», которая сообщает вам, какие разрешения должен иметь этот пользователь. Если вы хотите по-настоящему модно, служба авторизации может вернуть подписанный JWT с их именем пользователя / DN и разрешениями, вроде пользовательского утверждения SAML / OID C.

В качестве бонуса эта система будет масштабироваться хорошо, если вы решите добавить альтернативные методы аутентификации в будущем, такие как ключи API, MFA и т. д. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...