Проверка подлинности SQL Server по протоколу SOAP

Для собственных веб-служб с поддержкой XML в SQL Server 2005 безопасностью можно управлять при помощи одного из следующих типов участников безопасности:

  • Учетной записи пользователя или группы Windows либо обоих
  • Имени входа SQL Server

Если учетная запись Windows используется при проверке подлинности конечной точки HTTP, дополнительные заголовки проверки подлинности SOAP не требуются. Сведения о проверке подлинности для конечных точек HTTP см. в разделах Типы проверки подлинности конечной точки и GRANT, предоставление разрешений на конечные точки (Transact-SQL).

Но если используется имя входа SQL Server, клиентское приложение должно дополнительно реализовать заголовки безопасности веб-служб (WS-Security) для проверки подлинности по протоколу SOAP и передать учетные данные SQL Server на сервер.

Для проверки подлинности имени входа SQL Server по протоколу SOAP может использоваться любой тип проверки подлинности HTTP. Кроме того, учетная запись пользователя, применяемая для проверки подлинности на уровне HTTP, требует доступ только к локальному серверу Windows, при этом имя входа SQL Server не требуется.

ms180919.note(ru-ru,SQL.90).gifПримечание.
Для проверки подлинности на основе SQL Server по протоколу SOAP параметр LOGIN_TYPE конечной точки должен быть установлен в смешанный режим (LOGIN_TYPE=MIXED). Работа конечной точки в смешанной режиме также требует, чтобы она была настроена на обслуживание по защищенному каналу (SSL). Дополнительные сведения см. в разделе CREATE ENDPOINT (Transact-SQL).

Использование заголовков WS-Security для проверки подлинности имени входа SQL Server (только в смешанном режиме)

WS-Security — внесенная на рассмотрение спецификация расширения структуры сообщений SOAP, помогающая обеспечить безопасность веб-служб. В частности, в SQL Server 2005 заголовок WS-Security при необходимости может применяться для обеспечения механизма проверки подлинности, в котором учетные данные и маркеры могут передаваться между клиентами SOAP и экземпляром SQL Server непосредственно в сообщении SOAP, расширяя его структуру.

При выполнении следующих условий можно использовать заголовки WS-Security, указывая имя пользователя и пароль SQL Server в клиентском приложении SOAP:

  • Экземпляр SQL Server 2005 настроен на работу в смешанном режиме. Это означает, что поддерживаются имена входа Windows и SQL Server.
  • Конечная точка имеет следующие параметры:
    • LOGIN_TYPE = MIXED.
    • PORTS=(SSL), что указывает порт типа SSL.
  • Разрешение на конечную точку предоставлено пользователям, не имеющим имени входа Windows (например, пользователем, имеющим имя входа SQL Server).

Если запрос SOAP содержит заголовок WS-Security, указанные в нем учетные данные переопределяют любые учетные данные, указанные для проверки подлинности на основе HTTP.

Использование заголовков WS-Security для проверки подлинности SQL Server

Заголовок WS-Security может быть указан в запросе SOAP, отправляемом на экземпляр SQL Server 2005 для поддержки:

  • Передачи учетных данных авторизации SQL Server (SQL-Auth)
  • Отслеживания истечения срока действия пароля SQL Server

Передача учетных данных SQL-Auth

Следующий пример показывает, как заголовок WS-Security может быть использован в запросе SOAP к экземпляру SQL Server 2005 для передачи учетных данных авторизации SQL Server (SQL-Auth).

<SOAP-ENV:Header>
            <wsse:Security  xmlns:wsse=
                        "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken>
                        <wsse:Username>JohnDoe</wsse:Username>
            <wsse:Password Type=
                        "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">pass-word1</wsse:Password>
            </wsse:UsernameToken>
            </wsse:Security>
</SOAP-ENV:Header>

В этом примере элемент <wsse:UserNameToken> содержит следующие два вложенных элемента:

  • Элемент <wsse:Username>, который содержит имя пользователя SQL Server.
  • Элемент <wsse:Password>, который имеет необязательный атрибут Type, установленный в значение "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText", который предназначен для хранения пароля пользователя.
ms180919.note(ru-ru,SQL.90).gifПримечание.
Если смешанный режим поддерживается для SQL Server 2005 и конечной точки HTTP SOAP, порт SSL обязателен для обеспечения минимально необходимой защиты канала при передаче учетных данных пользователя.

Отслеживание истечения срока действия пароля SQL Server

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

Чтобы обновить клиент для поддержки этой возможности, необходимо завершить процесс с помощью заголовка WS-Security, как показано в следующем примере.

<SOAP-ENV:Header>
 <wsse:Security  xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken>
                        <wsse:Username>JohnDoe</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">pass-word2</wsse:Password>
            <sql:OldPassword Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText" xmlns:sql="https://schemas.microsoft.com/sqlserver/2004/SOAP">pass-word1</sql:OldPassword>
            </wsse:UsernameToken>
 </wsse:Security>
</SOAP-ENV:Header>

Изменение пароля также может быть выполнено в сеансе SOAP. Запрос на смену пароля будет выдан только при инициации нового сеанса.

Например, для смены пароля в новом сеансе SOAP добавьте в раздел <SOAP-ENV:Header>:

<sqloptions:sqlSession xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options" initiate="true"/>

Дополнительные сведения см. в разделе Работа с сеансами SOAP.

Кроме того, элемент <wsse:UserNameToken> несколько изменился и теперь содержит следующие три элемента, отличающиеся от предыдущего примера отправки учетных данных пользователя:

  • Элемент <wsse:Username>, который содержит имя пользователя SQL Server.
  • Элемент <wsse:Password>, который имеет необязательный атрибут Type, установленный в значение "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText", и содержит текст нового пароля пользователя
  • Элемент <sql:OldPassword>, который имеет необязательный атрибут Type, установленный в значение "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText". и содержит текст старого пароля пользователя.

XML-схема заголовка WS-Security

Ниже приведен фрагмент схемы заголовка WS-Security для реализации только в SQL Server 2005.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="https://schemas.microsoft.com/sqlserver/2004/SOAP" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
  <xsd:import namespace="https://schemas.microsoft.com/sqlserver/2004/SOAP" />
  <xsd:annotation>
    <xsd:documentation xml:lang="en">(c) Copyright 2004, Microsoft Corporation The following schema for Microsoft SQL Server is presented in XML format and is for informational purposes only. Microsoft Corporation ("Microsoft") may have trademarks, copyrights, or other intellectual property rights covering subject matter in the schema. Microsoft does not make any representation or warranty regarding the schema or any product or item developed based on the schema. The schema is provided to you on an AS IS basis. Microsoft disclaims all express, implied and statutory warranties, including but not limited to the implied warranties of merchantability, fitness for a particular purpose, and freedom from infringement. Without limiting the generality of the foregoing, Microsoft does not make any warranty of any kind that any item developed based on the schema, or any portion of the schema, will not infringe any copyright, patent, trade secret, or other intellectual property right of any person or entity in any country. It is your responsibility to seek licenses for such intellectual property rights where appropriate. MICROSOFT SHALL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SCHEMA, INCLUDING WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL (INCLUDING ANY LOST PROFITS), PUNITIVE OR SPECIAL DAMAGES, WHETHER OR NOT MICROSOFT HAS BEEN ADVISED OF SUCH DAMAGES.</xsd:documentation> 
  </xsd:annotation>
  <xsd:element name="Security">
    <xsd:complexType>
      <xsd:sequence minOccurs="1" maxOccurs="1">
        <xsd:element name="UsernameToken">
          <xsd:complexType>
            <xsd:sequence minOccurs="1" maxOccurs="1">
              <xsd:element name="Username" type="xsd:string" />
              <xsd:element name="Password">
                <xsd:complexType>
                  <xsd:simpleContent>
                    <xsd:extension base="xsd:string">
                      <xsd:attribute name="Type" type="xsd:anyURI" />
                    </xsd:extension>
                  </xsd:simpleContent>
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="OldPassword" type="sql:OldPassword" minOccurs="0" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="https://schemas.microsoft.com/sqlserver/2004/SOAP" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="https://schemas.microsoft.com/sqlserver/2004/SOAP">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">(c) Copyright 2004, Microsoft Corporation The following schema for Microsoft SQL Server is presented in XML format and is for informational purposes only. Microsoft Corporation ("Microsoft") may have trademarks, copyrights, or other intellectual property rights covering subject matter in the schema. Microsoft does not make any representation or warranty regarding the schema or any product or item developed based on the schema. The schema is provided to you on an AS IS basis. Microsoft disclaims all express, implied and statutory warranties, including but not limited to the implied warranties of merchantability, fitness for a particular purpose, and freedom from infringement. Without limiting the generality of the foregoing, Microsoft does not make any warranty of any kind that any item developed based on the schema, or any portion of the schema, will not infringe any copyright, patent, trade secret, or other intellectual property right of any person or entity in any country. It is your responsibility to seek licenses for such intellectual property rights where appropriate. MICROSOFT SHALL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SCHEMA, INCLUDING WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL (INCLUDING ANY LOST PROFITS), PUNITIVE OR SPECIAL DAMAGES, WHETHER OR NOT MICROSOFT HAS BEEN ADVISED OF SUCH DAMAGES.</xsd:documentation> 
  </xsd:annotation>
  <xsd:complexType name="OldPassword">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="Type" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
</xsd:schema>

См. также

Справочник

Добавление заголовков SOAP в клиентские приложения
Типы проверки подлинности конечной точки

Другие ресурсы

Режим проверки подлинности

Справка и поддержка

Получение помощи по SQL Server 2005