2016-06-21 2 views
0

Я занимаюсь внедрением 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, здесь маркер доступа.

Возможно ли это, или я смотрю на это совершенно неправильно и, возможно, лучший подход к удовлетворению требований?

ответ

1

Похоже, вы говорите о двух вещах.

Во-первых, в API-интерфейсах вам нужен идентификатор пользователя. Чтобы получить идентификатор пользователя, у вас есть решение, если вы хотите создать доверенную подсистему или если вы не хотите доверенную подсистему (в том смысле, что ваши API доверяют или не доверяют клиенту MVC для передачи по идентификатору пользователя). Если вы используете доверенную подсистему, то учетные данные клиентских учетных данных от клиента MVC к API прекрасны. Если вам не нужна доверенная подсистема, вам нужен клиент MVC для получения токена доступа для пользователя (через неявный или гибридный поток).

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

Смежные вопросы