Je travaille sur un service qui fournit l'intégration intelligente (espérons-le) de différents services prenant en charge OAuth 2.0
. L'objectif de notre outil est sur l'amélioration de l'équipe de flux de travail, de sorte que nous combinons Slack
, GitHub
, Asana
(numéro suivi), Cezanne
(h outil), etc.Comment déléguer l'autorisation aux services Auth 2.0 externes
Nous avons ui et back-end qui fonctionnent avec tous ces outils (l'utilisateur est autorisé à tous, j'ai donc besoin d'accéder et de rafraîchir les jetons). Nous devons être capables de cacher différentes parties de l'interface utilisateur en fonction du rôle de la personne dans un outil spécifique. Prenons le GitHub
comme exemple. L'utilisateur peut être un propriétaire de référentiel, un contributeur, un propriétaire d'entreprise (pour un compte d'entreprise), etc., de sorte que ces utilisateurs peuvent avoir besoin d'un autre utilisateur en fonction de leurs droits. Au départ, j'étais hésitant à implémenter l'autorisation moi-même (un autre système d'autorisation personnalisé est la dernière chose dont ce monde a besoin), je voulais profiter des mécanismes d'autorisation des autres services et créer un wrapper léger autour d'eux. Cela m'a semblé une idée raisonnable au début, mais je n'arrive pas à comprendre comment l'implémenter et Google ne donne pas de précieux conseils ce qui signifie: 99,99% J'essaie de faire quelque chose de stupide, 00,01% J'essaie de faire quelque chose de rare/innovant.
J'espérais tirer parti de OAuth 2.0
mais il ne semble pas supporter ce dont nous avons besoin. La chose la plus proche est celle des portées, mais elle ne semble pas très pertinente pour notre scénario.
La seule idée que j'ai pour l'instant est de créer notre propre système d'autorisation et d'intégrer d'autres services en utilisant le type de reverse engineering. Je demande donc les détails du compte GitHub de l'utilisateur à l'aide de l'API et lui applique les rôles dans notre système: Propriétaire du référentiel A, contributeur du référentiel B, propriétaire de la société C, etc. Je devrai inverser la permission pour chaque rôle (c.-à-d. le propriétaire du référentiel ne peut pas changer le nom de la société). Et nous devrons garder des rôles d'utilisateur pour chaque service: ainsi, au lieu de Admin/User/Manager/etc. nous aurons: OwnerOfGitHubRepository (pour repositoryA), ManagerOfAsanaTeam (pour l'équipe B), etc.
Ce serait génial si OAuth 2.0
services avaient un point final qui les autorisations retourner disponibles pour un utilisateur en cours. Je ne suis pas un ingénieur de sécurité, donc je pourrais manquer quelque chose d'évident. Donc, je voulais vous demander des conseils avant d'investir dans la mise en œuvre mentionnée ci-dessus.
Merci d'avoir prouvé qu'OAuth 2.0 n'est pas la solution au problème décrit. J'adorerais entendre vos pensées sur la solution décrite dans la question (je l'ai un peu modifiée pour être plus clair). – SiberianGuy