다음을 통해 공유


ACS에서 지원되는 토큰 형식

업데이트: 2015년 6월 19일

Azure에 적용합니다.

웹 애플리케이션 및 서비스가 Microsoft Azure Active Directory Access Control(Access Control Service 또는 ACS라고도 함)로 인증을 처리하는 경우 클라이언트는 애플리케이션 또는 서비스에 로그인하기 위해 ACS에서 발급한 보안 토큰을 가져와야 합니다. ACS는 다음 형식으로 보안 토큰을 발급할 수 있습니다.

  • SAML(Security Assertion Markup Language) 1.1 및 2.0

  • SWT(단순 웹 토큰)

  • JWT(JSON 웹 토큰)

참고

ACS는 다음 형식 중 어떤 형식으로든 보안 토큰을 발급할 수 있습니다. ACS가 웹 애플리케이션 또는 서비스에 사용하는 토큰 형식은 신뢰 당사자 애플리케이션 구성에 의해 결정됩니다. 신뢰 당사자 애플리케이션을 구성하는 방법에 대한 자세한 내용은 신뢰 당사자 애플리케이션을 참조하세요.

SAML(Security Assertion Markup Language) 1.1 및 2.0

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

SWT(단순 웹 토큰)

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

설명

발급자

토큰을 발급한 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로 디코딩된 값

사용자 정의 클레임

역할(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=

JWT(JSON 웹 토큰)

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

JWT 토큰 형식의 ACS 구현은 JWT 사양의 초안 9를 따릅니다. 자세한 내용은 https://go.microsoft.com/fwlink/?LinkID=253666를 참조하세요. SWT 토큰과 마찬가지로 JWT는 REST 웹 서비스에 적합한 간단한 토큰 형식입니다. SWT 형식과 달리 JWT는 다양한 서명 옵션을 지원합니다. ACS는 JWT 토큰에 대한 대칭 및 비대칭 서명을 모두 지원합니다. ACS에서 발급한 JWT 토큰에 항상 있는 클레임은 다음 표에 나와 있습니다.

클레임 클레임 유형 및 JWT 설명

발급자

iss

토큰을 발급한 Access Control 네임스페이스의 표현입니다. 이 값의 패턴은 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” ]
}

ACS 토큰 및 프로토콜

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 토큰을 발급할 수 있습니다.

참고 항목

개념

ACS 아키텍처
ACS 2.0 구성 요소