Кардинг процесса единого входа CAS

PHP

предисловие

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

Блок-схема, обязательная к просмотру

Сначала изображение (сеть источника изображения)

img

Авторизоваться

Согласно блок-схеме, внешний интерфейс должен запросить у сервера аутентификацию при первом входе на страницу.

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

передний конец прыгать вhttps://*.*/cas/login?service=http://*.*чтобы залогиниться.

После входа в системуCASвернется на передний планticket,Например:http://*.*?ticket=ST-1212

В это время передняя страница повторно введена, передняя страница продолжает запрашивать аутентификацию с сервера.

Сервер обнаруживает, что пользователь не имеет учетных данных, выданных сервером, но имеетCASизданныйticket, в это время сервер запрашиваетCASПодтвердите вход (Примечание: из-заCASизданныйticketВремя истечения очень короткое, по умолчанию10s, поэтому при тестировании вручную нужно обращать внимание на скорость).

запросить ссылкуdemo:https://*.*/cas/serviceValidate?service=http://*.*?ticket=ST1212

Если проверка пройдена, он вернетсяXMLинформации, результаты следующие:

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
    <cas:authenticationSuccess>
        <cas:user>login_name</cas:user>
    </cas:authenticationSuccess>
</cas:serviceResponse>

Проверка не удалась, возвратXMLинформации, результаты следующие:

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
    <cas:authenticationFailure code='INVALID_TICKET'>
        Ticket &#039;ST-12148040&#039; not recognized
    </cas:authenticationFailure>
</cas:serviceResponse>

Если проверка пройдена, соответствующие учетные данные генерируются для внешнего интерфейса.

Когда внешний интерфейс инициирует какой-либо запрос на стороне сервера, ему необходимо передать учетные данные на стороне сервера.Если окажется, что они недействительны, весь процесс входа будет повторен.

выход

Выйти из системы относительно просто, пройдите напрямую черезhttps://*.*/cas/logout?service=http://*.*Вот и все.