Я использую EF6 с IdentityServer4. Все это база данных - пользователи, претензии и клиенты.
Как я могу получить Роли пользователя из моего токена на предъявителя клиентам? В настоящее время у меня есть пользователь с ролью с именем CustomerAdministrator
, назначенной для моего теста, но я не могу получить эту роль.
Моя CustomerAdministrator
роль была добавлена в таблицы:
- AspNetRoleClaims
- AspNetRoles
- AspNetUserRoles
Что мне не хватает?
Результат токена:
{
"sid": "20d62652c0504f2b521c8a7c24ee7320",
"sub": "a997a3ad-82bd-430f-9191-5b95408967b1",
"auth_time": 1553518560,
"idp": "local",
"amr": [
"pwd"
],
"name": "Bob Smith",
"given_name": "Bob",
"family_name": "Smith",
"preferred_username": "bob"
}
Другие решения, которые я нашел в Stack Overflow, похоже, основаны на решениях для памяти.
Примечание: все это основано на примере Combined_AspId_and_EFStorage
для IdentityServer4.
В базе данных:
ApsNetRoleClaims
1 | -uudi- | role | CustomerAdministrator
ApsNetRoles
1 | -uudi- | CustomerAdministrator | CustomerAdministrator | -uuid
ApsNetUserRoles
1 | -uuid User- | -uuid RoleId-
ClientScopes
3 | api1 | 1
4 | openid | 4
5 | profile | 4
6 | api | 4
7 | profile | 3
8 | api | 3
10 | role | 1
11 | role | 2
12 | role | 3
13 | role | 4
IdentityResources
1 | 1 | openip | Your user identifier | NULL | 1 | 0 | 1 | ...
2 | 1 | profile| You profile... | ... | 0 | 1 | 1 | ...
3 | 6 | role | User Role | Role | 1 | 1 | 1 | ...