Я занимаюсь внедрением IdentityServer3 в нашей компании, но я ударил о том, как обрабатывать клиентскую авторизацию клиента, и оценил бы любой указатель в правильном направлении.IdentityServer3 Клиент для авторизации клиента
Это резюме наших требований:
- У нас есть несколько клиентов, веб-сайта, что доступ к нашим пользователям. Они настраиваются с использованием потока AuthorizationCode. Позволяет называть их WebSiteClientA, WebSiteClientB.
- У нас есть несколько клиентов WebAPI как серверные услуги, которые могут быть доступны либо клиентом (WebSiteClientA, WebSiteClientB) или пользователем (который имеет доступ к WebSiteClientA или WebSiteClientB). Позволяет называть это WebAPIClientA.
Примечание: Наша компания имеет личность пользователей, а также всех клиентов.
Изначально я, хотя мы могли бы настроить WebAPIClientA с использованием потока ClientCredentials. Тогда WebSiteClientA \ WebSiteClientB будет настроен с учетными данными клиента для WebAPIClientA и может генерировать маркер доступа, когда он необходим доступ к WebAPIClientA, или альтернативно генерировать маркер доступа с ограниченным области и передать этот токен доступа пользователю, чтобы пользователь мог получить доступ к WebAPIClientA непосредственно со стороны клиента.
Это будет соответствовать почти всем нашим требованиям, кроме 1 большой, мы также хотим иметь возможность управлять областями, доступными клиенту для другого клиента, и с использованием потока ClientCredentials любой, у кого есть учетные данные клиента, иметь возможность генерировать токены доступа для всех областей под этим клиентом. т.е. WebSiteClientA должен быть в состоянии генерировать маркер доступа для WebAPIClientA с чтением & областей записи, но WebSiteClientB должен только быть в состоянии генерировать маркер доступа для WebAPIClientA с областью чтения ,
На моем взгляде, клиент \ идентичность сервер разговор был бы: WebSiteClientA делает запрос к серверу тождественности для маркеров доступа к WebAPIClientA для области видимости X и обеспечивает секрет клиента для WebSiteClientA. Сервер идентичности, то говорит, что да, вы WebSiteClientA и мы можем видеть из наших записей у вас есть доступ к WebAPIClientA с областью X, здесь маркер доступа.
Возможно ли это, или я смотрю на это совершенно неправильно и, возможно, лучший подход к удовлетворению требований?