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

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

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


person lgaud    schedule 04.04.2016    source источник


Ответы (1)


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

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

person Brock Allen    schedule 05.04.2016
comment
Это работает для некоторых запросов, но не для последующего вызова конечной точки UserInfo (где, как вы упомянули, есть только Subject). В итоге я закодировал эту информацию в теме моих пользователей и создал 2 записи в одном разделе для эффективного запроса в хранилище таблиц. - person lgaud; 05.04.2016
comment
Правильно -- и если вы перечитаете, то увидите, что я написал "assuming the requests into those APIs are being done via the browser such as from the authorization request". - person Brock Allen; 06.04.2016
comment
Я хочу использовать пользовательское добавленное утверждение для передачи в веб-API в access_token. Как я могу это сделать ? - person Kishan Gajjar; 20.07.2018