В спецификации SAML2 есть несколько мест в утверждении, где можно указать время жизни.
- Элемент
<SubjectConfirmationData>
содержит атрибутNotOnOrAfter
. - Элемент
<Conditions>
содержит атрибутNotOnOrAfter
. - Элемент
<AuthnStatement>
содержит атрибутSessionNotOnOrAfter
.
В чем смысл каждого из них? Как они соотносятся друг с другом?
В частности, какие из них необходимо проверить, когда...
- ... потребление входящего ответа Saml2Response с использованием веб-единого входа
- ... установление сеанса приложения в SP
- ... обновление (продление) сеанса приложения в SP
- ... пересылка утверждения в веб-службу, действие от имени субъекта (как описано @Thuan)
- ... выдача одиночного запроса на выход idp, чтобы гарантировать, что idp все еще знает о сеансе?
Каждый из NotOnOrAfters описан в базовой спецификации SAML2. Я включил части, которые я могу найти, которые описывают эти атрибуты здесь.
SubjectConfirmationData/@NotOnOrAfter
Временной момент, когда субъект больше не может быть подтвержден. Значение времени кодируется в формате UTC, как описано в разделе 1.3.3.
Обратите внимание, что период времени, указанный дополнительными атрибутами NotBefore и NotOnOrAfter, если они имеются, СЛЕДУЕТ относиться к общему периоду действия утверждения, указанному атрибутами NotBefore и NotOnOrAfter. Если оба атрибута присутствуют, значение NotBefore должно быть меньше (раньше) значения NotOnOrAfter.
Условия /@NotOnOrAfter
Определяет момент времени, в течение которого это утверждение истекло. Значение времени кодируется в формате UTC, как описано в разделе 1.3.3.
Атрибуты NotBefore и NotOnOrAfter определяют временные ограничения на достоверность утверждения в контексте его профиля (ов) использования. Они не гарантируют правильности или точности заявлений в утверждении на протяжении всего срока действия. Атрибут NotBefore определяет момент времени, с которого начинается интервал действия. Атрибут NotOnOrAfter указывает момент времени, в течение которого интервал действия закончен. Если значение для NotBefore или NotOnOrAfter опущено, то считается неуказанным. Если атрибут NotBefore не указан (и если все остальные условия, которые поставляются, оцениваются как Действительные), то утверждение является Действительным в отношении условий в любое время до момента времени, указанного в Атрибут NotOnOrAfter. Если атрибут NotOnOrAfter не указан (и если все остальные условия, которые поставляются, оцениваются как Действительные), утверждение является Действительным в отношении условий с момента времени, указанного атрибутом NotBefore, без истечения срока действия. Если ни один атрибут не указан (и если какие-либо другие условия, которые поставляются, оцениваются как Действительные), утверждение является действительным в отношении условий в любое время.
Если оба атрибута присутствуют, значение NotBefore ДОЛЖНО быть меньше (раньше) значения для NotOnOrAfter.
AuthnStatement/@SessionNotOnOrAfter
Указывает верхнюю границу сеансов с объектом, полученным из прилагаемого утверждения. Значение времени кодируется в UTC, как описано в разделе 1.3.3. Между этим атрибутом и обязательным атрибутом NotOnOrAfter не существует необходимой связи, которая может присутствовать в утверждении. Он оставил профили для предоставления конкретных правил обработки для полагающихся сторон на основе этого атрибута.