У меня есть веб-приложение ASP.NET, и я использую IdentityServer3 для аутентификации пользователя. Наши клиенты входят в веб-приложение, используя идентификатор пользователя/пароль. Теперь у меня есть еще один веб-API, и некоторым нашим клиентам нужно вызывать этот веб-API из своих приложений. (связь сервер-сервер). Итак, основываясь на это, в identityserver я сделал следующее
1> Создано новое имя области api
2> Создан новый клиент для веб-API и настроены с разрешенной областью api
и offline_access
3> Установите для потока значение ClientCredentials
4> Установите для AccessTokenType значение Jwt
5 > Для каждого клиента я создал свой секретный ключ
Теперь наши клиенты могут получить токен доступа в конечной точке connect/token
, а затем выполнить вызов API, используя токен доступа. API проверяет токен с помощью IdentityServer, а затем возвращает результат. Все хорошо до сих пор.
Однако в проекте API мне также нужно идентифицировать customer
, также известный как caller
. Основываясь на клиенте, мне нужно сделать некоторую логику
public class ResourcesController : ApiController
{
public IHttpActionResult Get()
{
var caller = User as ClaimsPrincipal;
// need to identify caller here
return Json(new
{
message = "OK",
});
}
}
(Одним из вариантов, который я могу придумать, является использование идентификатора клиента как части URL-адреса API. Что-то вроде http://api.domain.com/v1/customerid/resources
)
Есть ли способ использовать IdentityServer для идентификации клиента?