Asp.net Identidad básica ¿Usar AspNetUserClaims o AspNetRoleClaims?

Todavía estoy confundido acerca de todas estas cosas de identidad. @

Primero sigo confundiendo la diferencia entre Roles, Políticas / Reclamaciones. Por lo que leí, los roles es la forma antigua de hacer cosas y se mantuvo por compatibilidad con versiones anteriores, entonces, ¿eso significa que AspNetRoleClaims es parte de esta compatibilidad con versiones anteriores?

Creo que entiendo las Reclamaciones y las Políticas cuando pienso en ellas individualmente, como la política es básicamente un conjunto de reglas que deben aprobarse y brinda la capacidad de cambiar las reglas sin tener que revisar todo el código y cambiar los roles.

Hubo un reclamo, es básicamente una fuente confiable que responde por ese usuario (es decir, esta es su edad, que podría provenir de una fuente del gobierno).

Ahora lo que me confunde es ponerlo todo junto.

Genere las tablas de identidad y vea

AspNetUsers
AspNetUserRoles
AspNetRoles
AspNetRoleClaims
AspNetUserClaims
AspNetUserLogins

Entiendo lo que hace la tabla AspNetUsers y AspNetUserLogins (parece ser si se usan como proveedores de inicio de sesión externos).

Me confundo en cuál es la diferencia entre AspNetRoleClaims y AspNetUserClaims. ¿Solo uso AspNetUserClaims o uso todo?

Digo que tengo este secenario

Tengo una empresa que tiene muchas sucursales, en cada sucursal serán administradores de esa sucursal, tienen todo el poder sobre la sucursal y pueden hacer cualquier cosa menos nada en otra sucursal. A nivel de empresa habrá un administrador que puede hacer cualquier cosa a nivel de empresa y cualquier sucursal. Finalmente, tengo una persona en la sucursal que puede agregar nuevos empleados.

¿Cómo se ve todo esto? ¿Hago 3 roles?

CompanyAdmin
BranchAdmin
AddUsersAtBranchLevel (or is this some sort of claim??)
What do the tables look like? Is there anything going to be in AspNetRoleClaims? AspNetUserClaims?

¿Ahora puedo hacer una política para verificar si el usuario es administrador de una sucursal y si está tratando de editar su sucursal?

O simplemente olvido todas las cosas de rol y tengo en AspNetUserClaims

User1   CanAddUserToBranch true
User1 CanDeleteUserBranch true
User1 CanAddUserToCompany true

Luego, en mi código, haga todos esos "Tipos de reclamo" diferentes y cree una política que vea si han dicho "CanAddUserToBranch" y luego otro reclamo o política para verificar en qué rama se encuentran para asegurarse de que están tratando de agregar algo a la derecha ¿rama

Edita

¿Crees que necesito usar una autorización basada en recursos?

Respuestas a la pregunta(1)

Su respuesta a la pregunta