Как подключить Rails Client к провайдеру IndentityServer SSO
На работе у нас есть система, работающая под управлением поставщика единого входа ThinkTecture IndentityServer, который в настоящее время обеспечивает аутентификацию для нескольких сайтов.NET и ColdFusion. В настоящее время я работаю над новым сайтом, который мы поддерживаем в Ruby on Rails, и мне трудно понять, как подключить его к SSO. (Я довольно новичок в рельсах, но долгое время работал на CF и.NET).
Я посмотрел на гем omniauth-oauth2 и oauth2, но кажется, что в документации и пояснениях, которые я могу найти, отсутствуют важные части. Существует масса информации, если я хочу аутентифицироваться с помощью Твиттера, Facebook или чего-то подобного, но я не могу найти ничего, что бы адресовало только клиентскую сторону для любого универсального поставщика OAuth2.
Я просто ищу кого-то, чтобы указать мне правильное направление, чтобы найти информацию о том, как я могу это сделать. Мне все равно, является ли он специфичным для IdentityServer или просто универсальным, независимо от поставщика. Спасибо за помощь.
Обновление. Как вы знаете, я бы предпочел использовать OAuth2 для этого соединения, но я не против использования любых других способов, которые предоставляет IdentityServer, включая ADFS, WSFed или Simple HTTP. Я не могу использовать OpenID, потому что эти учетные записи относятся к нашей системе и не могут быть использованы для других систем.
2 ответа
Оказывается, это довольно просто. Сложность в том, что нет прямого ответа на вопрос. Способ подключения к IdentityServer полностью зависит от того, как настроен IdentityServer.
Я не собираюсь публиковать свой точный код, так как это не поможет тем, у кого IdentityServer не настроен точно так же, как мы, и, поскольку у меня нет доступа к IdentityServer, я не могу сказать точно как это Я объясню общее решение, хотя.
- Единственный драгоценный камень, необходимый для этого - JWT
- Получить коды ключей от администратора IdentityServer (идентификатор клиента, секретный ключ, ключ подписи)
- Создайте URL для входа в систему в соответствии с конфигурацией IdentityServer
- Перенаправить пользователя на путь входа в систему, созданный на последнем шаге
- Получить токен обратно от IdentityServer
- Декодируйте и проверяйте, используя функцию JWT.decode
Оттуда у вас просто есть строка JSON с вашими данными.
Вам действительно нужна библиотека с открытым идентификатором.