ACS でサポートされるトークン形式

更新日: 2015 年 6 月 19 日

適用先:Azure

Web アプリケーションとサービスがMicrosoft Azure Active Directory Access Control (Access Control サービスまたは ACS とも呼ばれます) による認証を処理する場合、クライアントは ACS によって発行されたセキュリティ トークンを取得して、アプリケーションまたはサービスにログインする必要があります。 ACS は、次の形式でセキュリティ トークンを発行できます。

  • Security Assertion Markup Language (SAML) 1.1 および 2.0

  • Simple Web Token (SWT)

  • JSON Web Token (JWT)

注意

ACS は、次のいずれかの形式でセキュリティ トークンを発行できます。 ACS が Web アプリケーションまたはサービスに使用するトークン形式は、証明書利用者アプリケーションの構成によって決まります。 証明書利用者アプリケーションの構成については、「 証明書利用者アプリケーション」を参照してください。

Security Assertion Markup Language (SAML) 1.1 および 2.0

Security Assertion Markup Language (SAML) は、シングル サインオン (SSO) と要求ベース ID で今日使用されている最も古く、最も一般的なトークン形式です。 SAML は、SAML トークンを使用して Web アプリケーションまたは Web サービス SSO を実行するための、プロトコルおよびトークンの XML 形式を指定します。 SAML トークンの詳細については、 SAML 仕様 (https://go.microsoft.com/fwlink/?LinkID=213719) を参照してください。

注意

SAML 1.1 および SAML 2.0 トークンは、Windows Identity Foundation (https://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>https://localhost:63000/</Audience>
        </AudienceRestriction>
    </conditions>
    <attributestatement>
        <Attribute Name="https://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider">
            <AttributeValue>uri:WindowsLiveID</AttributeValue>
        </Attribute>
    </attributestatement>
</assertion>

Simple Web Token (SWT)

Simple Web Token (SWT) トークンは SimpleWebToken 仕様に準拠しています。 SWT トークンは、暗号化キーで署名されているフォーム エンコードされたキー/値のペアとして表されます。 仕様では一部のキー/値のペアの存在を義務付けていますが、アプリケーション固有のキー/値のペア用の領域は確保されます。 ACS によって発行された SWT トークンに常に存在するキーを次の表に示します。

Key 説明

発行者

トークンを発行した ACS サービス名前空間の表現。 この値のパターンは https://< servicenamespace.accesscontrol.windows.net/> です。

対象ユーザー

トークンの要求に使用される applies_to の値。 この値は HTTP または HTTPS URI のいずれかです。

ExpiresOn

トークンの有効期限が切れるエポック時間。

HMACSHA256

他のすべてのキー/値のペアの HMACSHA256 署名。 このキー/値のペアは常にトークンにおける最後のキー/値のペアです。 他のキー/値のペアのフォーム エンコードされた表現は署名されます。

これらのキーと値のペアに加えて、ACS は発行前に 1 つ以上の要求をトークンに追加します。 これらの要求は、トークン要求時に ACS に存在するルール構成によって駆動されます。 このような要求のすべてに種類と 1 つ以上の値があります。種類と値の両方が文字列です。 要求に複数の値が含まれている場合、それらの値はコンマ (「,」) 文字で区切られます。 要求は、上記の表に示されているキー/値のペアのとおり正確に、キー/値のペアとしてエンコードされます。

キーと値のペアとして表される要求を含む 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 デコードされた値

ユーザー定義の要求

role

Admin%2cUser

Admin,User

customerName

Contoso%20Corporation

Contoso Corporation

システム定義の要求

発行者

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

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

対象ユーザー

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

https://localhost/myservice

ExpiresOn

1255912922

1255912922

HMACSHA256

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

yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64=

JSON Web Token (JWT)

JSON Web Token (JWT) サポートはベータ版で追加されています。これは、予告なしで重大な変更が生じる可能性があることを意味します。

JWT トークン形式の ACS 実装は、JWT 仕様のドラフト 9 に従います。 詳細については、「https://go.microsoft.com/fwlink/?LinkID=253666」を参照してください。 SWT トークンに似ていますが、JWT は REST Web サービスに適したコンパクトなトークン形式です。 SWT 形式とは異なり、JWT ではさまざまな署名オプションがサポートされています。 ACS では、JWT トークンの対称署名と非対称署名の両方がサポートされています。 ACS によって発行された JWT トークンに常に存在する要求を次の表に示します。

要求 JWT を使用する要求の種類 [説明]

発行者

iss

トークンを発行したAccess Control名前空間の表現。 この値のパターンは https://< namespace.accesscontrol.windows.net/>

対象ユーザー

aud

トークンの要求に使用されるスコープの値。 この値はトークンの対象の受信者を特定するために使用されます。

期間の開始時刻

nbf

トークンが有効になるエポック時間。

有効期限

exp

トークンの有効期限が切れるエポック時間。

JWT トークンでは以下のアルゴリズムがサポートされます。

JWT ヘッダーのアルゴリズム ID [説明]

HS256

SHA-256 ハッシュ アルゴリズムを使用する HMAC。 対称キーを使用して JWT に署名する場合。

RS256

SHA-256 ハッシュ アルゴリズムを使用する RSA。 証明書で x509 を使用し、非対称キーで JWT に署名する場合。

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” ]
}

ACS トークンとプロトコル

SAML 2.0、SAML 1.1、SWT、JWT トークンが発行されると、ACS はさまざまな標準プロトコルを使用してトークンを Web アプリケーションまたはサービスに返します。 ACS では、次のトークン形式とプロトコルの組み合わせがサポートされています。

  • ACS は、(トークン要求で使用されるプロトコルに応じて) WS-TrustおよびWS-Federationプロトコルを介して SAML 2.0 トークンを発行して返すことができます。

  • ACS は、(トークン要求で使用されるプロトコルに応じて) WS-Federationおよび関連するWS-Trust プロトコルを介して SAML 1.1 トークンを発行して返すことができます。

  • ACS は、WS-Federation、WS-Trust、OAuth WRAP または OAuth 2.0 プロトコル (トークン要求で使用されるプロトコルに応じて) を介して SWT トークンを発行および返すことができます。

  • ACS は、WS-Federation、WS-Trust、または OAuth 2.0 プロトコルを介して JWT トークンを発行できます (トークン要求で使用されるプロトコルに応じて)。

参照

概念

ACS アーキテクチャ
ACS 2.0 コンポーネント