이 설명서는 보관되지만 유지 되지 않습니다.

ACS에서 지원되는 토큰 형식

게시: 2011년 4월

업데이트 날짜: 2015년 6월

적용 대상: Azure

웹 응용 프로그램 및 서비스에서 Microsoft Azure Active Directory 액세스 제어(액세스 제어 서비스 또는 ACS라고도 함)에 대한 인증을 처리하는 경우 클라이언트가 응용 프로그램 또는 서비스에 로그인하려면 ACS에서 발급한 보안 토큰을 얻어야 합니다. ACS는 다음과 같은 형식의 보안 토큰을 발급할 수 있습니다.

note참고
ACS는 다음과 같은 형식의 보안 토큰을 발급할 수 있습니다. ACS가 웹 응용 프로그램 또는 서비스에 사용하는 토큰 형식은 신뢰 당사자 응용 프로그램 구성에 의해 결정됩니다. 신뢰 당사자 응용 프로그램 구성에 대한 자세한 내용은 신뢰 당사자 응용 프로그램을 참조하세요.

SAML(Security Assertion Markup Language)은 현재 SSO(Single Sign-On) 및 클레임 기반 ID에 사용되는 가장 오래되고 가장 일반적인 토큰 형식입니다. SAML은 SAML 토큰을 사용하여 웹 응용 프로그램 또는 웹 서비스 SSO를 수행하기 위한 토큰 및 프로토콜의 XML 형식을 지정합니다. 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>

SWT(단순 웹 토큰) 토큰은 SimpleWebToken 사양을 준수합니다. SWT 토큰은 암호화 키로 서명된 형식 암호화된 키/값 쌍으로 표현됩니다. 이 사양에서는 키/값 쌍이 있어야 한다고 지정하지만 응용 프로그램별 키/값 쌍의 여지를 둡니다. ACS에서 발급한 SWT 토큰에 항상 있는 키는 다음 테이블에 표시되어 있습니다.

 

Key 설명

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로 디코딩된 값을 보여 줍니다.

 

원본 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=

JWT(JSON 웹 토큰) 지원은 베타에 추가될 예정입니다. 즉, 예고 없이 엄청난 변화가 있을 수 있습니다.

JWT 토큰 형식의 ACS 구현은 JWT 사양의 초안 9를 따릅니다. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=253666을 참조하세요. SWT 토큰과 마찬가지로 JWT는 REST 웹 서비스에 적합한 간단한 토큰 형식입니다. 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입니다. 인증서가 포함된 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” ]
}

SAML 2.0, SAML 1.1, SWT, JWT 토큰이 발급되면 ACS는 다양한 표준 프로토콜을 사용하여 토큰을 웹 응용 프로그램 또는 서비스에 반환합니다. 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 토큰을 발급 및 반환할 수 있습니다(토큰 요청에 사용된 프로토콜에 따라).

참고 항목

표시: