asp.net Identity Role утверждает в Thinktecture.IdentityServer.v3

У меня есть образец сервера Auth, настроенного с использованием Thinktecure.IdentityServer.v3, к которому также подключен Thinktecture.IdentityManager. Я также использую asp.net Identity и Entity Framework, поэтому у меня подключены связанные плагины от Thinktecture. Соответствующие пакеты NuGet ниже

<package id="Thinktecture.IdentityManager" version="1.0.0-beta3" targetFramework="net451" />
<package id="Thinktecture.IdentityManager.AspNetIdentity" version="1.0.0-beta3" targetFramework="net451" />
<package id="Thinktecture.IdentityModel.Core" version="1.3.0" targetFramework="net451" />
<package id="Thinktecture.IdentityServer.v3" version="1.0.0-rc" targetFramework="net451" />
<package id="Thinktecture.IdentityServer.v3.AspNetIdentity" version="1.0.0-rc" targetFramework="net451" />
<package id="Thinktecture.IdentityServer.v3.EntityFramework" version="1.0.0-rc" targetFramework="net451" />

Я зарегистрировал IdentityManager и IdentityServer в соответствии с примерами проектов, включенными в репозиторий образцов IdentityServer.

Я успешно создал пользователя с помощью IdentityManager и создал утверждение роли с именем «Admin». Я добавил пользователя в эту роль / заявку.

Используя «Неявный клиент JavaScript» из примера «Клиенты», я вхожу в систему через свой сервер аутентификации с правильными учетными данными. Я получил вызов, как и следовало ожидать, а затем успешно вернулся в клиентское приложение с токеном идентификации.

Неявный клиент JavaScript позволяет вам просматривать содержимое вашего токена идентификации. В токене нет списка утверждений «роли» ... что я понимаю, поскольку эти утверждения специфичны для asp.net Identity.

Мой вопрос на самом деле ... как включить эти утверждения ролей в токен удостоверения?

Нужно ли мне создавать настраиваемую область с именем «роли», применять ClaimsRule для возврата утверждений типа «роль», а затем пытаться реализовать это ClaimsRule в настраиваемом ClaimsProvider? Если да, то я не видел, как правильно реализовать ClaimsRule в какой-либо документации.

Тот факт, что asp.net Identity, кажется, предназначен для поддержки сразу после окончательной первоначальной версии ... может быть, есть более простой способ?

Если потребуется дополнительная информация или образцы конфига, я могу их предоставить :)


person Matt Demler    schedule 19.01.2015    source источник


Ответы (1)


Как оказалось ... есть более простой способ (и в настоящее время он предоставляется "из коробки")

StandardScopes.Roles предоставляется как предопределенная область.

Добавьте это в свою Scopes коллекцию, а также в ScopeRestrictions вашего Client.

Теперь клиенту необходимо добавить «роли» в параметр области при запросе токена идентификатора.

Это, вероятно, было самоочевидным, но я пропустил это, так как этого не было в репозитории Samples (который я видел) или в какой-либо документации. Надеюсь, это поможет другим новичкам познакомиться с этим замечательным продуктом.

person Matt Demler    schedule 25.01.2015
comment
Как добавить область ролей к ограничениям области действия? Под каким именем? роли? - person Behrooz; 06.10.2015
comment
@behroozdalvandi Вот ссылка на файл в их примерах проекта github.com/IdentityServer/IdentityServer3.Samples/blob/master/. - person Matt Demler; 08.10.2015
comment
@behroozdalvandi Соответствующий фрагмент, на который стоит обратить внимание: AllowedScopes = new List<string> {... Constants.StandardScopes.Roles, ...} Я думаю, что они изменили ScopeRestrictions на AllowedScopes в этой более поздней версии IdServ - person Matt Demler; 08.10.2015
comment
Хорошо, я сделал это, но все же, когда я пишу метод, который выводит все утверждения в моем токене доступа, он не включает никаких утверждений ролей из базы данных. - person Behrooz; 08.10.2015