Как структурировать токен доступа с несколькими ролями в нескольких группах - PullRequest
0 голосов
/ 29 апреля 2020

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

Допустим, у меня есть веб-приложение, которое по сути представляет собой коллекцию фотоальбомов. , Есть несколько сотен или тысяч альбомов, и пользователь может быть членом нескольких. У пользователя также будут разные разрешения в каждом альбоме, например, возможность читать фотографии, писать фотографии, читать комментарии, читать лайки и т. Д. c. С помощью управления доступом на основе ролей я мог бы просто добавить область, например «фотографии: читать», но я не хочу, чтобы она применялась ко всем фотографиям, только к фотографиям в конкретном c альбоме.

I Понимаете, что если бы пользователь должен был участвовать в десятках тысяч альбомов с разными разрешениями в каждом, не было бы никакого способа вписать все это в токен, поэтому в этом случае представьте, что пользователь будет участником только 10 альбомов, и что количество различных разрешений будет около 100.

Я думал добавить к токену утверждение по линии

"permissions": [ "IdForAlbum1":BitStringWithPermissions, "IdForAlbum2":BitStringWithPermissions, ]

I подумал, что это будет компактно и гибко, но мне нужно где-то определить цепочку битов, и я беспокоюсь, что это немного хакерски. Есть ли стандартизированный способ справиться с этим? У этого вида авторизации есть имя?

Некоторые другие примечания: у меня будут роли для глобальных вещей, таких как добавление пользователей, изменение разрешений и т. Д. c. Я также думаю, что смогу решить эту проблему с помощью одного токена на альбом, но многие запросы будут выполнять операции между альбомами. Я планирую использовать Auth0, но я могу быть гибким на этом этапе.

...