Как проверить из реестра заявок memcached, если пользователь уже вошел в CAS или нет? - PullRequest
0 голосов
/ 29 марта 2019

В настоящее время мы используем CAS 5.3.9. У нас есть приложения, которые используют протокол CAS, а также протокол CAS REST. Для приложений, которые используют протокол CAS REST (особенно мобильное приложение), мы хотим проверить, выполнил ли пользователь вход в CAS sso. Если так, то мы хотим позволить пользователю аутентифицироваться. Мы используем реестр билетов memcached. Как мы можем проверить из memcached, если пользователь уже вошел в CAS или нет?

Я хочу создать веб-сервис, который будет действовать как прокси между CAS и приложениями, использующими протокол CAS REST. Этот веб-сервис проверит, вошел ли пользователь в CAS или нет. Для этого я могу подключиться к memcached и получить статистику о плитах и ​​предметах в memcached. Оттуда я могу получить значение, используя элементы в качестве ключа, но оно зашифровано с использованием алгоритма хеширования FNV1_64_HASH и сериализации KRYO. Значение похоже на cookie для выдачи билетов. Используя протокол CAS Rest, я могу получить билет для предоставления билетов и сервисный билет для сервиса, проверить сервисный билет и получить ответ CAS для пользователя. Теперь я хочу проверить в memcached, вошел ли этот пользователь в CAS или нет.

Это моя memcached конфигурация для CAS

cas.ticket.registry.memcached.servers=mymemcached:11211
cas.ticket.registry.memcached.locatorType=CONSISTENT
cas.ticket.registry.memcached.failureMode=Redistribute
cas.ticket.registry.memcached.hashAlgorithm=FNV1_64_HASH
cas.ticket.registry.memcached.shouldOptimize=false
cas.ticket.registry.memcached.daemon=true
cas.ticket.registry.memcached.maxReconnectDelay=-1
cas.ticket.registry.memcached.useNagleAlgorithm=false
cas.ticket.registry.memcached.shutdownTimeoutSeconds=-1
cas.ticket.registry.memcached.opTimeout=-1
cas.ticket.registry.memcached.timeoutExceptionThreshold=2
cas.ticket.registry.memcached.maxTotal=20
cas.ticket.registry.memcached.maxIdle=8
cas.ticket.registry.memcached.minIdle=0
cas.ticket.registry.memcached.transcoder=KRYO
cas.ticket.registry.memcached.transcoderCompressionThreshold=16384
cas.ticket.registry.memcached.kryoAutoReset=false
cas.ticket.registry.memcached.kryoObjectsByReference=false
cas.ticket.registry.memcached.kryoRegistrationRequired=false

cas.ticket.registry.memcached.crypto.signing.key=mykey
cas.ticket.registry.memcached.crypto.signing.keySize=512
cas.ticket.registry.memcached.crypto.encryption.key=mykey
cas.ticket.registry.memcached.crypto.encryption.keySize=16
cas.ticket.registry.memcached.crypto.alg=AES
cas.ticket.registry.memcached.crypto.enabled=true

Я хочу знать, как на самом деле memcached хранит билеты, чтобы я мог проверить пользователей, есть ли уже билет для них или нет

1 Ответ

0 голосов
/ 26 июня 2019

У нас есть приложения, которые используют протокол CAS, а также протокол CAS REST.Для приложений, которые используют протокол CAS REST (особенно мобильное приложение)

Таким образом, это означает, что ваши приложения получают доступ к TGT, который выдается CAS.Пока этот TGT считается действительным для сервера CAS, вы можете управлять сессией SSO на его основе и считать, что пользователь вошел в систему. Помните, что при использовании REST управление сессиями SSO полностью остается на приложении;если пользователь выходит из вашего приложения, вам нужно связаться с CAS, чтобы убить TGT.

, мы хотим проверить, входит ли пользователь уже в CAS sso.Если так, то мы хотим позволить пользователю аутентифицироваться.Мы используем реестр билетов memcached.

Запишите конечную точку в CAS, которая принимает TGT и проверяет действительность TGT в реестре билетов CAS, используя API TicketRegistry.Если билет может быть действительным и срок его действия еще не истек, ваша конечная точка может выдать ответ.

Соответствующее сообщение в блоге может помочь.

PS Всегда указывайте версию программного обеспеченияв ваших постах.

...