Аудитория пуста в сгенерированном токене jwt

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

Конечно, я мог бы вручную добавить его в созданный ClaimsPrincipal, но мне интересно, есть ли способ для этого, как в IdentityServer. В IdentityServer вы можете объявлять ресурсы api, а для этих ресурсов вы можете объявлять области. Если была запрошена область ресурса API, имя ресурса API было включено как аудитория.

Есть ли способ сообщить OpenIddict, что при запросе области действия необходимо включить специальную аудиторию или ее необходимо реализовать вручную?


person Koppa Péter    schedule 19.03.2021    source источник
comment
Помогает ли этот поток SO решить проблему: stackoverflow .com / questions / 62930426 /.   -  person Fei Han    schedule 22.03.2021


Ответы (1)


Вы можете прикрепить список ресурсов к области при ее создании через диспетчер области:

await manager.CreateAsync(new OpenIddictScopeDescriptor
{
    DisplayName = "Demo API access",
    DisplayNames =
    {
        [CultureInfo.GetCultureInfo("fr-FR")] = "Accès à l'API de démo"
    },
    Name = "demo_api",
    Resources =
    {
        "resource_server"
    }
});

Затем используйте ListResourcesAsync(scopes), чтобы перечислить все ресурсы, связанные с указанными областями. Например:

principal.SetResources(await _scopeManager.ListResourcesAsync(principal.GetScopes()).ToListAsync());
person Kévin Chalet    schedule 05.04.2021