Как настроить клиентов на сервере аутентификации для архитектуры SPA - REST с проверкой? - PullRequest
0 голосов
/ 28 января 2020

Я знаю, что этот топи c уже много и уже есть много билетов. Но после просмотра сотен билетов и страниц я не нашел необходимой информации об архитектуре.

Я планирую простой SPA (Angular) - REST Backend (отдельный. Net Core 2.1 WebApi) настроить. У меня есть Keycloak для обеспечения аутентификации через OpenId Connect. Я использую пакет OpenId для Angular для связи с Keycloak, для получения идентификатора и токенов доступа.

Мне бы хотелось, чтобы клиент Angular имел доступ только к идентификационному токену и информация аутентифицирована / авторизирована. Токен доступа не должен представлять интереса для Angular интерфейса, верно? Таким образом, я мог бы также зашифровать токен доступа к защищенной информации?

Затем я передаю зашифрованный токен доступа в свой REST-Backend (имеет доступ к секрету приложения), где я могу проверить зашифрованную подпись, зашифрованное тело токен и, возможно, интроспективный токен на сервере аутентификации для проверки и предоставления доступа к ресурсам?

Но почему во многих статьях говорится, что конфиденциальный клиент Keycloak (имеет секретный ключ приложения) не является подходящим способом для настройки SPA? Самому SPA не нужен секрет, нужен только бэкэнд или нет?

Пожалуйста, я был бы признателен за любую информацию, которая поможет мне закрыть оставшиеся пробелы.

1 Ответ

2 голосов
/ 28 января 2020

Токен доступа не должен представлять интереса для внешнего интерфейса Angular, верно?

Да, ваш клиент должен только проверить и декодировать токен ID, чтобы получить информацию профиля пользователя .Access токен для доступа к защищенному ресурсу, который не требуется для проверки токена доступа в клиентском приложении.

Таким образом, я также мог бы зашифровать токен доступа к защищенной информации? 1010 * Не уверен, что я понимаю ваш сценарий. JWT могут быть подписаны, зашифрованы или оба, что контролируется службой токенов. Когда ваш веб-интерфейс API получает токен доступа, он проверяет токен доступа, проверяет подпись с помощью ключа publi c, опубликованного поставщиком удостоверений.

Но почему во многих статьях говорится, что Keycloak конфиденциальный клиент (имеет секретный ключ приложения) не подходит для настройки SPA?

В настоящее время рекомендуется использовать поток предоставления кода авторизации с Proof Key для Code Exchange (PKCE) для защиты Angular приложение Это безопаснее, чем хранить секрет клиента в спа-приложении. Я не знаком с Keycloak, но вы можете нажать здесь для статьи о том, как использовать поток кода + PKCE в Angular приложении, использующем Keycloak в качестве IDP.

...