Identidade principal do Asp.net Use AspNetUserClaims ou AspNetRoleClaims?

Ainda estou confuso sobre todas essas coisas de identidade.

Primeiro, ainda estou confuso com a diferença entre Funções, Políticas / Reivindicações. Pelo que li nas funções, a maneira antiga de fazer as coisas era mantida para compatibilidade com versões anteriores. Isso significa que o AspNetRoleClaims faz parte dessa compatibilidade com versões anteriores?

Eu acho que entendo Declarações e Políticas ao pensar nelas individualmente, como política é basicamente um conjunto de regras que deve passar e oferece a capacidade de alterar regras sem ter que passar por todo o código e alterar funções.

Era uma reivindicação, é basicamente uma fonte confiável que atesta esse usuário (ou seja, essa é a idade deles, que pode vir de uma fonte do governo).

Agora, o que me confunde é juntar tudo.

Eu gerei as tabelas de identidade e veja

AspNetUsers
AspNetUserRoles
AspNetRoles
AspNetRoleClaims
AspNetUserClaims
AspNetUserLogins

Eu recebo o que a tabela AspNetUsers faz e o AspNetUserLogins (parece ser se eles usam como provedores de logon externos).

Fico confuso sobre qual é a diferença entre AspNetRoleClaims e AspNetUserClaims. Eu apenas uso AspNetUserClaims ou uso tudo?

Diga que eu tenho esse secenario

Eu tenho uma empresa que tem muitas filiais; em cada filial, eles serão administradores dessa filial; eles têm poder total sobre a filial e podem fazer qualquer coisa, exceto nada, em outra filial. No nível da empresa, haverá um administrador que pode fazer qualquer coisa no nível da empresa e em qualquer filial. Finalmente, tenho uma pessoa no ramo que pode apenas adicionar novos funcionários.

Como é tudo isso? Eu faço 3 papéis?

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?

Agora eu posso fazer uma política para verificar se o usuário é um administrador de filial e se ele está tentando editar sua filial?

Ou simplesmente esqueço todas as coisas importantes e tenho no AspNetUserClaims

User1   CanAddUserToBranch true
User1 CanDeleteUserBranch true
User1 CanAddUserToCompany true

Em seguida, no meu código, crie todos esses "ClaimTypes" diferentes e crie uma política que veja se eles dizem "CanAddUserToBranch" e, em seguida, outra declaração ou política para verificar em que ramo eles estão, para garantir que eles estão tentando adicionar algo ao ramo certo ?

Editar

Você acha que preciso usar a autorização baseada em recursos?

questionAnswers(1)

yourAnswerToTheQuestion