Как добавить утверждения в контекст для GetProfileDataAsync и IsActiveAsync для пользовательской службы пользователя?

Я реализую пользовательский сервис, который хранит информацию о пользователе в хранилище таблиц Azure. Я хотел бы использовать значение идентификатора клиента как часть моего ключа раздела, но утверждения, доступные в GetProfileDataAsync и IsActiveAsync, представляют собой всего 5 встроенных утверждений (sub, name, amr, idp, auth_time).

Я получаю ID арендатора от моего провайдера идентификации, и он включается в качестве требования в мой токен доступа и токен идентификации. Как я могу сделать это доступным для этих методов?

1 ответ

Решение

Когда AuthenticateLocal это вызов, вы возвращаете AuthenticateResult указать результат аутентификации. Если это успешно, вы используете перегрузку ctor, которая принимает subject а также name ценности. Там также необязательно claims коллекция. Если вы передаете значения для claims затем вы добавляете свои собственные пользовательские утверждения в файл cookie аутентификации на IdentityServer. Эти претензии затем являются частью Subject для GetProfile API (при условии, что запросы в эти API выполняются через браузер, например, из запроса на авторизацию). Затем вы можете проверить эти претензии и использовать их по своему усмотрению.

Если запрос не через браузер, то единственное требование, которое у вас есть на Subject это уникальный идентификатор пользователя (который является sub претензии).

Другие вопросы по тегам