Эта документация перемещена в архив и не поддерживается.

Форматы токенов, поддерживаемые в ACS

Опубликовано: Апрель 2011 г.

Обновлено: Июнь 2015 г.

Назначение: Azure

Если веб-приложения и службы реализуют проверку подлинности с помощью Microsoft Azure Active Directory Access Control (также называется Access Control Service или ACS), клиенту необходимо получить токен безопасности, выданный службой Служба управления доступом, чтобы войти в приложение или службу. Служба управления доступом может выдавать токены безопасности в следующих форматах:

noteПримечание
Служба управления доступом может выдавать токены безопасности в следующих форматах: Формат токена, используемый Служба управления доступом для веб-приложения или службы, определяется конфигурацией приложения проверяющей стороны. Сведения о настройке приложений проверяющей стороны см. в разделе Приложения проверяющей стороны.

Security Assertion Markup Language (SAML) — это самый старый и распространенный формат токенов для единого входа (SSO) и удостоверений на основе утверждений. SAML определяет формат XML для токенов и протоколов, необходимый для единого входа в веб-приложение или службу с помощью токенов SAML. Дополнительные сведения о токенах SAML см. в статье Спецификации SAML (http://go.microsoft.com/fwlink/?LinkID=213719).

noteПримечание
Токены SAML 1.1 и SAML 2.0 поддерживаются многими платформами разработки, в том числе Windows Identity Foundation (http://go.microsoft.com/fwlink/?LinkID=213729).

Ниже приведен пример токена SAML.

<assertion id="_4fe09cda-cad9-49dd-b493-93494e1ae4f9" issueinstant="2012-09-18T20:42:11.626Z"
    version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<issuer>https://test05.accesscontrol.windows.net/</issuer>
<ds:signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:signedinfo>
        <ds:canonicalizationmethod algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
        <ds:signaturemethod algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
        <ds:reference uri="#_4fe09cda-cad9-49dd-b493-93494e1ae4f9">
            <ds:transforms>
                <ds:transform algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                <ds:transform algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
            </ds:transforms>
            <ds:digestmethod algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
            <ds:digestvalue>8qmfRKuATFuo4M96xuci7HCLUGUeO3eBxHOi9/HaFNU=</ds:digestvalue>
        </ds:reference>
    </ds:signedinfo>
<ds:signaturevalue>UWcXJElfrP8hfdNi8ipzSjfxCYGYzoylkn5HdSa8IhphvyZBvbZl1OFEbMSygoo8xNgnywUNPuzZP8nV7CwZNuSWVZZSrF2pHAswBKQoJoodpzrGRR0ruT+A2sjXfnLQqN+X/xanXqqg4ViUOR9xHvn8vzaRwYxPPsjI4OXq0hzLlyuBzhw42XHzZk1qknQr1wp/lZTMwrFnY38gziUZ+Ci1Duen5Xt9k+0ZFujtSBqJKIran1V263o8CkvoahNcNKT//OcXc3va7zeJf67V9/lwY34MkFoqqfeuTSzEuZfk7pYRNqwhOZGhokpR+1qHjEbJr3p6dOOPkuQp9p6zsQ==</ds:signaturevalue>
    <keyinfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <X509Data>       <X509Certificate>MIIDCDCCAfCgAwIBAgIQRmI8p7P/aphMv5Kr9vQpqTANBgkqhkiG9w0BAQUFADAtMSswKQYDVQQDEyJBQVJPTkJPT0subnRkZXYuY29ycC5taWNyb3NvZnQuY29tMB4XDTEyMDUyMTIzMjMxMFoXDTEzMDUyMTAwMDAwMFowLTErMCkGA1UEAxMiQUFST05CT09LLm50ZGV2LmNvcnAubWljcm9zb2Z0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI79l6EOSWswJn3d9i4yfZh9Cwo2XNhb4tOWvmljCKFlrWoz/Drch5aOzdmI/yFaqkyX7BXc/zoSmX1n3VkqHIeJkGECcZX2bD4jPuICVmKBcXo0SeQ+2vF6DoqjVKaegWrPsqmDrlCscnlMLb11Fg1Ffqkm8wyyWwbQvC5VnVf0i9DPE0n+i3NJi9cT57obrNRkQzwfBZy08I2JlpxLfaUUDhHlF99C1MtBduzn3au+S20gom1cHAcSvHBormXbjPZ5F6RJUz7kO/U+M5rYkiS+vtANtnBlUAK8fRmEUrYFRMr1tyiOXcRid/7UJP3e0EmAsneMnuD9WO/mK6MuzIECAwEAAaMkMCIwCwYDVR0PBAQDAgQwMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBBQUAA4IBAQBCRM9maY5ZE+wIxefxjT0IAqp7H6l062PKOGdld5MapOJUWbng2CrfUV3YI5OSD9yhevgDne3jf2DUBv5QndHdms+FL260ydDmwet4A5kJi3ZBO4sR/PZTz3FdeeOwdTeUS2wAMJuphAZ1+PUVk25bbEu/DKmgeYzRn64CHWqk5sPKzH9jAszvX2EeoClI+8Sp/bXHTwzEUOFYcicPOO+tuFTqHOYBDT5bE42rAp/SaC1wXbmTCGS12gfCZCrlml6LZNTsKQWBF2szXOPGcFcInGkauZDUUtZd+921uy0E/sYwgNfi8phU1aGZjIESVFQ70LpfvIMwF6++BRX12icW</X509Certificate>
        </X509Data>
    </keyinfo>
</ds:signature>
<subject>
    <NameID>abc1def2ghi3jkl4mno5pqr6stu7vwx8yza9bcd0efg=</NameID>
    <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" />
</subject>
    <conditions notbefore="2012-09-18T20:42:11.610Z" notonorafter="2012-09-18T21:42:11.610Z">
        <AudienceRestriction>
            <Audience>http://localhost:63000/</Audience>
        </AudienceRestriction>
    </conditions>
    <attributestatement>
        <Attribute Name="http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider">
            <AttributeValue>uri:WindowsLiveID</AttributeValue>
        </Attribute>
    </attributestatement>
</assertion>

Токены Simple Web Token (SWT) соответствуют спецификациям стандарта SimpleWebToken. Токены SWT представляют собой закодированные пары ключей и значений, подписанные криптографическим ключом. Согласно спецификациям обязательно наличие каких-либо пар ключей и значений, но также могут использоваться и специальные пары приложения. Ключи, которые всегда содержатся в токене SWT, выданном Служба управления доступом, представлены в следующей таблице.

 

Key Описание

Issuer

Представление Служба управления доступом пространство имен службы, выдавшей токен. Шаблон для этого значения: https://<пространство_имен_службы>.accesscontrol.windows.net/.

Аудитория

Значение applies_to используется для запроса токена. Возможные значения: HTTP или HTTPS URI.

ExpiresOn

Время эпохи, через которое срок действия токена истекает.

HMACSHA256

Подпись HMACSHA256 всех других пар ключей и значений. Эта пара ключей и значений всегда идет последней в токене. Закодированное представление других пар ключей и значений (включая утверждения приложения) подписывается.

В дополнение к этим парам ключей и значений Служба управления доступом добавляет одно или несколько утверждений в токен перед его выдачей. Эти утверждения основаны на конфигурации правил, настроенной в Служба управления доступом на момент запроса токена. У всех таких утверждений есть тип и одно или несколько значений, все они представлены строками. Если утверждение содержит несколько значений, они разделяются запятой (","). Утверждения кодируются как пары ключей и значений, как описано в предыдущей таблице.

Ниже приведен пример токена Служба управления доступом с утверждениями, представленными парами ключей и значений.

Audience=http%3a%2f%2flocalhost%2fmyservice&ExpiresOn=1255913549Issuer=https%3a%2f%2fmyservice.accesscontrol.windows.net%2f&role=Admin%2cUser&role=Admin%2cUser&&HMACSHA256=sT7Hr9z%2b3t1oDFLpq5GOToVsu6Dyxpq7hHsSAznmwnI%3d

За исключением пары HMACSHA256, эти пары могут идти в любом порядке. Следующий токен Служба управления доступом аналогичен предыдущему, но их подписи различаются.

role=Admin%2cUser&customerName=Contoso%20Corporation&Issuer=https%3a%2f%2fmyservice.accesscontrol.windows.net%2f&Audience=http%3a%2f%2flocalhost%2fmyservice&ExpiresOn=1255912922&HMACSHA256=yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d

В следующей таблице показано содержимое токена с декодированными значениями URL-адреса.

 

Источник Key Закодированное значение URL-адреса Декодированное значение URL-адреса

Утверждения, определенные пользователем

роль

Admin%2cUser

Admin,User

customerName

Contoso%20Corporation

Contoso Corporation

Утверждения, определенные системой

Issuer

https%3a%2f%2fmyservice.accesscontrol.windows.net%2f

https://myservice.accesscontrol.windows.net/

Аудитория

http%3a%2f%2flocalhost%2fmyservice

http://localhost/myservice

ExpiresOn

1255912922

1255912922

HMACSHA256

yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d

yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64=

Поддержка веб-токенов JSON (JWT) будет добавлена в бета-версию, т. е. существенные изменения могут появиться без предупреждения.

Реализация формата токенов JWT в Служба управления доступом соответствует черновой 9 версии спецификации JWT. Дополнительные сведения см. в разделе http://go.microsoft.com/fwlink/?LinkID=253666. Как и SWT, JWT — это компактный формат токенов, подходящий для веб-служб REST. Но в отличие от SWT формат JWT поддерживает различные варианты подписи. Служба управления доступом поддерживает симметричные и асимметричные подписи для токенов JWT. Утверждения, которые всегда содержатся в токене JWT, выданном Служба управления доступом, представлены в следующей таблице.

 

Утверждение Тип утверждения, используемый JWT Описание

Issuer

iss

Представление Пространство имен Access Control, выдавшего токен. Шаблон для этого значения: https://<пространство_имен>.accesscontrol.windows.net/.

Аудитория

aud

Значение области, которое используется для запроса токена. Оно используется для определения получателя токена.

Not Before

nbf

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

Истечение срока действия

exp

Время эпохи, через которое срок действия токена истекает.

Для токенов JWT поддерживаются следующие алгоритмы:

 

Идентификатор алгоритма в заголовке JWT Описание

HS256

HMAC с использованием хэш-алгоритма SHA-256. Для подписи токена JWT с помощью симметричного ключа.

RS256

RSA с использованием хэш-алгоритма SHA-256. Для подписи токена JWT с помощью асимметричного ключа, используя x509 с сертификатом.

Вот пример токена JWT:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczovL2NvbnRvc28uY29tL3JlbHlpbmdwYXJ0eSIsImlzcyI6Imh0dHBzOi8vY29udG9zby5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0LyIsIm5iZiI6MTMzNjA2NzMzOCwiZXhwIjoxMzM2MDcwOTM4LCJuYW1laWQiOiJjbGllbnRBcHAiLCJpZGVudGl0eXByb3ZpZGVyIjoiY29udG9zby5jb20ifQ._3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw. 

Токен JWT состоит из сегментов, разделенных точкой ("."). В следующей таблице показаны декодированные сегменты токена JWT:

 

Сегмент JWT Значение

Заголовок JWT

{"typ":"JWT","alg":"HS256"}

Набор утверждений JWT

{"aud":"https://contoso.com/relyingparty","iss":"https://contoso.accesscontrol.windows.net/","nbf":1336067338,"exp":1336070938,"nameid":"clientApp","identityprovider":"contoso.com"}

Подпись

_3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw

Одно утверждение с несколькими значениями представляется массивом JSON. Например, если пользователю назначено несколько ролей, утверждение роли будет выглядеть следующим образом:

{
 "aud":"https://contoso.com/relyingparty",
"iss":"https://contoso.accesscontrol.windows.net/",
"nbf":1336067338,"exp":1336070938,
"nameid":"frankm",
"identityprovider":"contoso.com",
“role”: [ “admin”, “user” ]
}

При выдаче токена SAML 2.0, SAML 1.1, SWT или JWT служба Служба управления доступом использует различные стандартные протоколы для возврата токена веб-приложению или службе. Служба управления доступом поддерживает следующие сочетания форматов и протоколов:

  • Служба управления доступом может выдавать и возвращать токены SAML 2.0 по протоколам WS-Trust и WS-Federation (в зависимости от протокола, используемого в запросе токена).

  • Служба управления доступом может выдавать и возвращать токены SAML 1.1 по протоколу WS-Federation и связанным протоколам WS-Trust (в зависимости от протокола, используемого в запросе токена).

  • Служба управления доступом может выдавать и возвращать токены SWT по протоколам WS-Federation, WS-Trust и OAuth WRAP или OAuth 2.0 (в зависимости от протокола, используемого в запросе токена).

  • Служба управления доступом может выдавать токены JWT по протоколам WS-Federation, WS-Trust и OAuth 2.0 (в зависимости от протокола, используемого в запросе токена).

См. также

Показ: