T.M. SoftStudio

feci quod potui, faciant meliora potentes

SAML

SAML 1.1

Спецификация SAML 1.1 определяет следующие понятия.

  • Assertions — утверждения. Каждое утверждение представлено структурой XML-элемента <Assertion>. Элемент <Assertion> может содержать информацию о том, что Web-сторона прошла аутентификацию определенным способом (например, с помощью пароля) в конкретное время, информацию о самой Web-стороне и права, предоставленные Web-стороне.

  • Protocol — протокол запроса и получения утверждений.

  • Bindings — механизмы передачи запроса и ответа SAML-протокола с помощью известных протоколов, например, с помощью SOAP/HTTP.

  • Profiles — механизмы реализации SAML. Определены два профиля SSO — Browser/Artifact Profile и Browser/POST Profile.

Профиль Browser/Artifact Profile основывается на модели, в которой клиент с помощью HTTP-агента связывается с сайтом центра аутентификации и проходит аутентификацию/авторизацию для доступа к запрашиваемому Web-ресурсу. После успешного прохождения аутентификации/авторизации клиента центр аутентификации генерирует HTTP-переменную, при этом ее значение включает в себя идентификатор центра аутентификации и ссылку на утверждение, содержащее подтверждение и описание факта аутентификации клиента. Данная HTTP-переменная включается в клиентский HTTP-запрос к ресурсу, к которому HTTP-запрос и перенаправляется. Получив клиентский HTTP-запрос, сайт ресурса, используя значение HTTP-переменной, посылает запрос центру аутентификации, который в ответ посылает сообщение, содержащее утверждение. Если утверждение является корректным, тогда клиент получает доступ к ресурсу. В другом сценарии клиент может в качестве первого шага связаться с сайтом ресурса. Сайт ресурса перенаправит клиентский запрос сайту центра аутентификации, и далее будут проделаны все вышеописанные действия.

Профиль Browser/POST Profile реализует сценарий, в котором клиент связывается с сайтом центра аутентификации и проходит аутентификацию/авторизацию. Центр аутентификации генерирует утверждение и посылает его в сообщении клиенту. После получения утверждения от центра аутентификации клиент посылает POST-запрос, содержащий утверждение, сайту ресурса, который, после проверки утверждения, обеспечивает клиенту доступ к ресурсу.

Утверждение представляет собой XML-данные, корневым элементом которых является элемент <Assertion> (пространство имен urn:oasis:names:tc:SAML:1.0:assertion). Элемент <Assertion> содержит следующие атрибуты и вложенные элементы:

  • обязательный атрибут MajorVersion — высший порядок версии спецификации (значение — 1);

  • обязательный атрибут MinorVersion — низший порядок версии спецификации (значение — 1). Таким образом, при значениях MajorVersion=1 и MinorVersion=1 версия спецификации SAML будет 1.1;

  • обязательный атрибут AssertionID — идентификатор утверждения;

  • обязательный атрибут Issuer — идентификатор стороны, генерирующей утверждение;

  • обязательный атрибут IssueInstant — дата и время создания утверждения;

  • дополнительный элемент <Conditions> — условия действительности утверждения;

  • дополнительный элемент <Advice> — дополнительная информация об утверждении, например дополнительные утверждения, представленные элементами <Assertion> или ссылками на утверждения, представленные элементами <AssertionIDReference>;

  • дополнительный элемент <ds:Signature> (пространство имен xmlns:ds="http://www.w3.org/2000/09/xmldsig#") — цифровая подпись XML Signature.

Элемент <Assertion> содержит какие-либо из элементов:

  • элемент <Statement> содержит элементы расширения спецификации SAML, описывающие утверждение;

  • элемент <SubjectStatement> содержит элементы расширения спецификации SAML, описывающие утверждение, включая элемент <Subject> с информацией о клиенте;

  • элемент <AuthenticationStatement> описывает утверждение того, что клиент прошел аутентификацию;

  • элемент <AuthorizationDecisionStatement> описывает утверждение того, что клиент получил определенные права доступа к запрашиваемым ресурсам;

  • элемент <AttributeStatement> описывает утверждение того, что клиент ассоциируется с определенными атрибутами (имя/значение), влияющими на права доступа, которые сервис ресурса выдает клиенту.

Элемент <Conditions> описывает условия действительности утверждения с помощью следующих атрибутов и вложенных элементов:

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

  • дополнительный атрибут NotOnOrAfter указывает время, до которого действует утверждение;

  • необязательный элемент <Condition> содержит элементы расширения спецификации SAML, описывающие дополнительные условия;

  • необязательный элемент <AudienceRestrictionCondition> указывает стороны, для которых предназначено данное утверждение с помощью вложенных элементов <Audience>, содержащих URI-идентификаторы сторон;

  • необязательный элемент <DoNotCacheCondition> — наличие элемента указывает, что данное утверждение не является повторно используемым.

Элемент <Subject> описывает клиента, которому выдано данное утверждение, используя вложенные элементы <NameIdentifier> и <SubjectConfirmation>.

Элемент <NameIdentifier> содержит имя клиента и имеет следующие атрибуты:

  • дополнительный атрибут NameQualifier — сторона, определяющая имя клиента;

  • дополнительный атрибут Format — URI-идентификатор формата имени клиента (по умолчанию urn:oasis:names:tc:SAML:1.0:nameid-format:unspecified). Спецификация предопределяет следующие форматы имени клиента:

    – urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress;

    – urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName;

    – urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName;

Элемент <SubjectConfirmation> содержит информацию, дающую возможность сервису ресурса подтвердить аутентификацию клиента с помощью вложенных элементов:

  • обязательный элемент <ConfirmationMethod> содержит URI-идентификатор протокола, используемого для подтверждения аутентификации клиента. Спецификация предопределяет следующие URI-идентификаторы:

    – urn:oasis:names:tc:SAML:1.0:cm:holder-of-key — аутентификация производится с помощью ключа, информация о котором содержится во вложенном элементе <ds:KeyInfo>. Это может быть, например, публичный ключ цифровой подписи, содержащейся в элементе <SubjectConfirmationData>;

    – urn:oasis:names:tc:SAML:1.0:cm:sender-vouches — информация, помогающая аутентифицировать клиента нет;

    – urn:oasis:names:tc:SAML:1.0:cm:artifact — клиент является стороной, передающей сервису ресурса ссылку, которую сервис ресурса использует для получения утверждения у центра аутентификации (профиль Browser/Artifact Profile);

    – urn:oasis:names:tc:SAML:1.0:cm:bearer — клиент является стороной, передающей сервису ресурса утверждение (профиль Browser/POST Profile);

  • необязательный элемент <SubjectConfirmationData> содержит данные, используемые протоколом для подтверждения аутентификации клиента;

  • необязательный элемент <ds:KeyInfo> содержит информацию о ключе клиента.

Элемент <AuthenticationStatement> описывает утверждение аутентификации клиента, используя атрибуты и вложенные элементы:

  • обязательный атрибут AuthenticationMethod — URI-идентификатор типа аутентификации. Спецификация предопределяет следующие типы аутентификации:

    – urn:oasis:names:tc:SAML:1.0:am:password — аутентификация с помощью пароля;

    – urn:ietf:rfc:1510 — аутентификация с помощью протокола Kerberos;

    – urn:ietf:rfc:2945 — аутентификация по протоколу Secure Remote Password Protocol (SRP);

    – urn:oasis:names:tc:SAML:1.0:am:HardwareToken — аутентификация с помощью аппаратного маркера защиты;

    – urn:ietf:rfc:2246 — аутентификация по протоколу SSL или TLS;

    – urn:oasis:names:tc:SAML:1.0:am:X509-PKI — аутентификация с помощью X.509 PKI-ключа;

    – urn:oasis:names:tc:SAML:1.0:am:PGP — аутентификация с использованием ключа PGP (Pretty Good Privacy);

    – urn:oasis:names:tc:SAML:1.0:am:SPKI — аутентификация с помощью SPKI PKI-ключа;

    – urn:oasis:names:tc:SAML:1.0:am:XKMS — аутентификация с помощью ключа XKMS (XML Key Management Specification);

    – urn:ietf:rfc:3075 — аутентификация с использованием цифровой подписи;

    – urn:oasis:names:tc:SAML:1.0:am:unspecified — неопределенная аутентификация;

  • обязательный атрибут AuthenticationInstant — время, когда клиент прошел аутентификацию;

  • необязательный элемент <SubjectLocality> — локализация клиента (DNS-имя и IP-адрес), указываемая с помощью атрибутов IPAddress и DNSAddress;

  • необязательный элемент <AuthorityBinding> — информация о центре аутентификации, указываемая атрибутами AuthorityKind (тип SAML-запроса центру аутентификации), Location (URI-адрес центра аутентификации), Binding (URI-идентификатор реализации SAML-протокола для связи с центром аутентификации);

  • элемент <Subject> — сведения о клиенте.

Элемент <AttributeStatement> описывает ассоциацию клиента с атрибутами с помощью вложенных элементов <Attribute> и <Subject>. Элемент <Attribute> имеет обязательные атрибуты AttributeNamespace, AttributeName и вложенный элемент <AttributeValue>.

Элемент <AuthorizationDecisionStatement> содержит информацию о правах клиента, используя следующие атрибуты и вложенные элементы:

  • обязательный атрибут Resource — URI-идентификатор ресурса, относительно которого назначаются права клиенту;

  • обязательный атрибут Decision — права клиента, возможные значения: Permit, Deny, Indeterminate;

  • обязательный элемент <Action> — действия, разрешенные для ресурсов, указываемые с помощью дополнительного атрибута Namespace (пространство имен действия; пространство имен urn:oasis:names:tc:SAML:1.0:action:rwedc соответствует действиям Read, Write, Execute, Delete, Control; пространство имен urn:oasis:names:tc:SAML:1.0:action:rwedc-negation, по умолчанию, соответствует действиям Read, Write, Execute, Delete, Control, ~Read, ~Write, ~Execute, ~Delete и ~Control; пространство имен urn:oasis:names:tc:SAML:1.0:action:ghpp соответствует действиям GET, HEAD, PUT, POST; пространство имен urn:oasis:names:tc:SAML:1.0:action:unix соответствует действиям extended, user, group, world, представленным кодом из 4-х цифр) и обязательного значения, определяющего разрешенное действие;

  • необязательный элемент <Evidence> — утверждения, которые подлежат авторизации. Этот элемент включает в себя элементы <AssertionIDReference> или <Assertion>;

  • элемент <Subject> — сведения о клиенте.

SAML-запросы к центру аутентификации и SAML-ответы, содержащие утверждения, включаются в тело SOAP-сообщения с помощью элементов <Request> и <Response>.

Элемент <Request> имеет следующие атрибуты и вложенные элементы:

  • обязательный атрибут RequestID — идентификатор запроса;

  • обязательный атрибут MajorVersion — высший порядок версии спецификации SAML (значение — 1);

  • обязательный атрибут MinorVersion — низший порядок версии спецификации SAML (значение — 1). Таким образом, при значениях MajorVersion=1 и MinorVersion=1 версия спецификации SAML будет 1.1;

  • обязательный атрибут IssueInstant — время создания запроса;

  • необязательный элемент <RespondWith> — тип ожидаемого ответа в виде имени SAML-утверждения (например, saml:AttributeStatement);

  • необязательный элемент <ds:Signature> — цифровая подпись запроса.

А также какие-либо из элементов:

  • <SubjectQuery> — запрос информации о клиенте;

  • <AuthenticationQuery> — запрос информации об аутентификации клиента. Имеет дополнительный атрибут AuthenticationMethod (фильтрация по методу аутентификации);

  • <AttributeQuery> — запрос информации об атрибутах клиента. Имеет дополнительный атрибут Resource (фильтрация по ресурсам) и необязательный вложенный элемент <AttributeDesignator> (фильтрация по имени атрибута);

  • <AuthorizationDecisionQuery> — запрос информации о правах клиента. Имеет дополнительный атрибут Resource и необязательные элементы <Action> и <Evidence>;

  • <AssertionIDReference> — запрос по ссылке на утверждение;

  • <AssertionArtifact> — запрос утверждения сервисом ресурса у центра аутентификации в профиле Browser/Artifact Profile.

Элемент <Response> имеет следующие атрибуты и вложенные элементы:

  • обязательный атрибут ResponseID — идентификатор ответа;

  • дополнительный атрибут InResponseTo — ссылка на идентификатор запроса;

  • обязательный атрибут MajorVersion — высший порядок версии спецификации SAML (значение — 1);

  • обязательный атрибут MinorVersion — низший порядок версии спецификации SAML (значение — 1). Таким образом, при значениях MajorVersion=1 и MinorVersion=1 версия спецификации SAML будет 1.1;

  • обязательный атрибут IssueInstant — время создания ответа;

  • дополнительный атрибут Recipient — получатель ответа;

  • необязательный элемент <ds:Signature> — цифровая подпись ответа;

  • обязательный элемент <Status> — статус выполнения соответствующего запроса. Вложенные элементы: <StatusCode> (обязательный элемент, указывает код статуса), <StatusMessage> (дополнительное сообщение) и <StatusDetail> (дополнительные детали). Элемент <StatusCode> может иметь вложенные элементы <StatusCode> (второстепенный код) и имеет обязательный атрибут Value с возможными значениями samlp:Success, samlp:VersionMismatch (ошибка версии), samlp:Requester (ошибка на стороне запроса) и samlp:Responder (ошибка на стороне ответа), возможные значения второстепенного кода — samlp:RequestVersionTooHigh, samlp:RequestVersionTooLow, samlp:RequestVersionDeprecated, samlp:TooManyResponses (ошибочное количество элементов), samlp:RequestDenied (запрет ответа), samlp:ResourceNotRecognized (неподдерживаемый ресурс). Пространство имен значений кода статуса — urn:oasis:names:tc:SAML:1.0:protocol;

  • необязательный элемент <Assertion> — возвращаемое утверждение.