本文件已封存並已停止維護。

在 ACS 中支援的權杖格式

發佈時間: 2011年4月

更新日期: 2015年6月

適用於: Azure

當您的 Web 應用程式與服務使用 Microsoft Azure Active Directory 存取控制服務 (也稱為「存取控制服務」或 ACS) 處理驗證時,用戶端必須取得由 ACS 簽發的安全性權杖才能登入您的應用程式或服務。ACS 可以簽發下列格式的權杖:

note附註
ACS 可以簽發下列任一格式的安全性權杖。ACS 用於 Web 應用程式或服務的權杖格式由信賴憑證者應用程式設定決定。如需設定信賴憑證者應用程式的相關資訊,請參閱信賴憑證者應用程式

安全性聲明標記語言 (SAML) 是目前用於單一登入和以宣告為基礎的身分識別最舊且最常見的權杖格式。SAML 會為權杖與通訊協定指定一個 XML 格式,以使用 SAML 權杖執行 Web 應用程式或的 Web 服務 SSO。如需 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>

簡易 Web 權杖 (SWT) 權杖符合 SimpleWebToken 規格。SWT 權杖是以編碼的表格金鑰/值配對 (以密碼金鑰簽署) 來表示。規格會強制某些金鑰/值配對存在,但留下空間給應用程式特定的金鑰/值配對。下表顯示在 ACS 簽發的 SWT 權杖中始終存在的金鑰。

 

金鑰 描述

Issuer

關於簽發權杖的 ACS 服務命名空間 的一種表示法。此值的模式是 https://<servicenamespace>.accesscontrol.windows.net/。

適用對象

applies_to 的值用於要求權杖。此值可以是 HTTP 或 HTTPS URI。

ExpiresOn

權杖到期的 Epoch 時間。

HMACSHA256

所有其他金鑰/值配對的 HMACSHA256 簽章。這個金鑰/值配對一律是權杖中最後一個金鑰/值配對。已簽署其他金鑰/值配對 (包括應用程式特定的宣告) 以表格編碼的表示法。

除了這些金鑰/值配對之外,ACS 也會在簽發前將一或多個宣告新增到權杖。這些宣告由 ACS 中存在的規則設定在權杖要求時間驅動。這些宣告都有一個類型與一或多個值,其中類型與值都是字串。當一個宣告包含一個以上的值時,會以逗號 (“,”) 字元區隔值。宣告會編碼成金鑰/值配對,和前一個表格中說明的金鑰/值配對完全一樣。

以下是包含宣告 (以金鑰/值配對表示) 的 ACS 權杖範例。

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 金鑰/值配對除外。下列 ACS 權杖等同於先前的 ACS 權杖,只有簽章不同而已。

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 解碼值的權杖內容。

 

來源 金鑰 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 Web 權杖 (JWT) 支援將要加入 Beta 版中,這表示可能會有重大變更,但不另行通知。

JWT 權杖格式的 ACS 實作會遵循 Draft 9 的 JWT 規格。如需詳細資訊,請參閱 http://go.microsoft.com/fwlink/?LinkID=253666。與 SWT 權杖類似,JWT 是適用於 REST Web 服務的精簡權杖格式。與 SWT 格式不同,JWT 支援各種簽署選項。ACS 同時支援 JWT 權杖的對稱和非對稱簽章。
。下表顯示在 ACS 簽發的 JWT 權杖中始終存在的宣告。

 

宣告 使用 JWT 的宣告類型 描述

Issuer

iss

關於簽發權杖的 存取控制命名空間 的一種表示法。此值的模式是 https://<namespace>.accesscontrol.windows.net/

適用對象

aud

用來要求權杖的範圍值。此值可用來識別權杖的預定收件者。

不早於

nbf

權杖要開始生效的 Epoch 時間。

到期

exp

權杖到期的 Epoch 時間。

JWT 權杖支援下列演算法:

 

JWT 標頭中的演算法識別碼 描述

HS256

使用 SHA-256 雜湊演算法的 HMAC。可供使用對稱金鑰簽署 JWT。

RS256

使用 SHA-256 雜湊演算法的 RSA。若要使用非對稱金鑰簽署 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 權杖時,ACS 會使用多種標準通訊協定將權杖傳回 Web 應用程式或服務。ACS 支援下列權杖格式/通訊協定組合。

  • ACS 可以透過 WS-Trust 與 WS-同盟通訊協定 (視權杖要求中使用的通訊協定而定) 來簽發及傳回 SAML 2.0 權杖。

  • ACS 可以透過 WS-同盟與相關的 WS-Trust 通訊協定 (視權杖要求中使用的通訊協定而定) 來簽發及傳回 SAML 1.1 權杖。

  • ACS 可以透過 WS-同盟、WS-Trust 及 OAuth WRAP 或 OAuth 2.0 通訊協定 (視權杖要求中使用的通訊協定而定) 來簽發及傳回 SWT 權杖。

  • ACS 可以透過 WS-同盟、WS-Trust 或 OAuth 2.0 通訊協定 (視權杖要求中使用的通訊協定而定) 來簽發 JWT 權杖。

另請參閱

顯示: