Условный вход с OpenId Connect - PullRequest
0 голосов
/ 13 июля 2020

Я читал об openid connect и проводил несколько экспериментов с Keycloak.

Мой вопрос: : Можно ли добавить условный вход на сервер OpenId Connect?

Это то, что я пытаюсь сделать. Я использую Keycloak в качестве поставщика удостоверений. Клиенты позволяют своим пользователям входить в систему через мое приложение. Но я не хочу, чтобы кто-либо имел доступ к этим клиентам; только те, кто оплатил подписку, могут получить доступ к клиенту. Если пользователь пытается войти в систему, но он или она не оплатили подписку, Keycloak должен перенаправить на страницу, где пользователь может купить план подписки.

Если это невозможно с OpenId Connect, это есть способ сделать это с помощью Keycloak?

Спасибо

1 Ответ

0 голосов
/ 15 июля 2020

Здесь есть 2 проблемы, и это общий шаблон, а не конкретизация c для Keycloak:

  • Аутентификация пользователя
  • Имеет ли пользователь право использовать приложение

Самый стандартный подход - использовать 2 источника пользовательских данных:

  • Искать пользователя по токену доступа в ваших собственных данных после входа в систему
  • Посмотрите, заплатили ли они
  • Перенаправить на страницу плана подписки, если нет

Моя запись в блоге на Управление данными пользователей может дать вам несколько идей.

ВОЗМОЖНАЯ РЕАЛИЗАЦИЯ

После входа в систему пользовательский интерфейс может вызвать конечную точку API, чтобы получить утверждения для пользователя в токене доступа:

  • GET / api / userclaims / current

Ответ может содержать объект с полями (утверждениями) из нескольких источников данных, а не только токен. Вот пример объекта утверждений моего.

Полезным методом может быть сбор утверждений, когда ваш API сначала получает токен доступа, а затем кеширует результаты для последующих вызовов API с тем же самым токен:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...