SAML(Security Assertion Markup Language)์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋น์ฌ์ ์ด์ ๊ฐ์ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํ XML ๊ธฐ๋ฐ ๋ฐ์ดํฐ ๊ตํ ํ์์ ๋๋ค.
SAML์ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์์ SSO(Single Sign-On)๋ฅผ ๊ตฌํํ๋ ์ธ๊ธฐ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์ฌ์ธ์ฆ ์์ด๋ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ฆ๋ ์ ์์ต๋๋ค.
๋ถ์ธ ์ฑ๋ช SAML์ ๋ค๋ฃจ๊ธฐ ๋ณต์กํ ์ฃผ์ ์ ๋๋ค. ์ ๋ ์ฌ์ ํ ๋ ๊น์ ์ฐจ์์์ ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฉฐ, ์ด ๊ธ์ ์ ๊ฐ ์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๋ฐ๋ผ์ ์๊ธ ํ ์์ ๋ฟ๋ ค์ ๋ฐ์๋ค์ฌ์ผ ํ ์ ํํ์ง ์์ ์ ๋ณด๊ฐ ์์ ์ ์์ต๋๋ค. ๊ฒ๋ค๊ฐ, ์ ๋ ์ง๊ธ์ ํ๊ตญ์ด ์ ๋ง ํ ์ ์์ด์ ์ด์ํ ๋ฌธ๋ฒ๊ณผ ๋จ์ด๋ฅผ ์ฐพ์์จ ๊ฒ์ ์ฃ์กํฉ๋๋ค. ์ด ๊ธ์ด ๊ผญ ๋ค์ ๋ฆฌ๋ทฐ๋ฅผ ํ ๊ฒ๋๋ค.
๊ตฌ์ฑ ์์
SAML์ ์ธ ๊ฐ์ง ๊ตฌ์ฑ ์์ ๋๋ ์ญํ ์ ์ง์ ํ๋ฉฐ, ์ด๋ ์ฃผ์ฒด(์ฌ์ฉ์), ID ์ ๊ณต์(IdP) ๋ฐ **์๋น์ค ์ ๊ณต์(SP)**์ ๋๋ค.
์ฃผ์ (์ฌ์ฉ์)
์ฑ์ด๋ ๋ณดํธ๋ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ์์ฒญํ๋ ์ฌ์ฉ์์ ๋๋ค.
ID ์ ๊ณต์(IdP)
์๋ณ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋น์ฌ์. ID ์ ๊ณต์์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Google Workspace
- Microsoft
- Okta
์๋น์ค ์ ๊ณต์(SP)
์ฌ์ฉ์๊ฐ ์ก์ธ์คํ๋ ค๋ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ . ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด SAML ํตํฉ์ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค.
SAML ์ง์ ์๋น์ค ์ ๊ณต์์ ์:
- Salesforce
- Pluralsight
- Microsoft 365
์ธ์ฆ ํ๋ฆ
SAML SSO๋ฅผ ์์ํ๋ ๋ฐ์๋ ID ์ ๊ณต์ ์์(IdP Init) ํ๋ฆ๊ณผ ์๋น์ค ์ ๊ณต์ ์์(SP Init) ํ๋ฆ์ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค.
์๋น์ค ์ ๊ณต์ ์์(SP Init)
์๋น์ค ์ ๊ณต์(์ ํ๋ฆฌ์ผ์ด์ )์์ ์์๋ ์ธ์ฆ ํ๋ฆ. ์ฌ์ฉ์๊ฐ ์ฑ์ ๋ก๊ทธ์ธ์ ์์ฒญํ์ง๋ง IdP๋ก ๋ฆฌ๋๋ ์ ๋จ.

ID ์ ๊ณต์ ์์(IdP Init)
ID ์ ๊ณต์(IdP)์์ ์์๋ ์ธ์ฆ ํ๋ฆ. ์ฐจ์ด์ ์ ์ด ํ๋ฆ์ SAML ์์ฒญ์ด ํฌํจ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด ์์ ์ ๋ฑ๋ก๋ ์ฑ์ด ์๋ IdP ํฌํธ์ ํตํด ์ํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋ฌ๋ฉด IdP๋ SP์ ์์ฒญ๋์ง ์์ SAML ์๋ต์ ์ ์กํ์ฌ ๋ก๊ทธ์ธ ์ธ์ ์ ์์ฑํฉ๋๋ค.
์๋๋ Okta์ ์ ํ๋ฆฌ์ผ์ด์ ๋์๋ณด๋์ ์์ ๋๋ค.

์ดํ
SAML ์์ธต
IdP๋ก ์ ์กํ๋ ์ธ์ฆ ์์ฒญ์ ๋๋ค. ์ฌ๊ธฐ์๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ์์ฒญํ๊ธฐ ์ ์ฌ์ฉ์์ ๋ง์ง๋ง ํ์ฑ ๋ฆฌ์์ค๋ฅผ ์ ์ฅํ๋ **๋ฆด๋ ์ด ์ํ(relay state)**๊ฐ ํฌํจ๋ ์ ์์ผ๋ฏ๋ก ์ธ์ฆ ํ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉ์๊ฐ ์ด์ ์ ์๋ ์์น๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค.
์ด๋ signicat.com์ AuthnRequest ์์์ ๋๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AttributeConsumingServiceIndex="1"
Destination="https://yourdomain/broker/sp/saml/login" ForceAuthn="true"
ID="_b6a016332e19a825bb42917c9870c93a" IssueInstant="2021-03-09T10:26:17.210Z"
Version="2.0">
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
yourEntityID
</saml2:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
... XML Signature ...
</ds:Signature>
</saml2p:AuthnRequest>SAML ์๋ต
SAML ์๋ต์๋ XML Signatures(DSig)๋ก ์๋ช ๋ ๋ฌธ์ฅ(assertion)์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ํ ์ฌ์ฉ์์ ์ด๋ฆ๊ณผ ์ฑ๊ณผ ๊ฐ์ ํ๋กํ ์ ๋ณด์ธ ์์ฑ๋ ํฌํจ๋์ด ์์ต๋๋ค. SAML ์๋ต์ ํด๋ผ์ด์ธํธ ์ธก์์ ์์ฒด **ACS(Assertion Consumer Service)**์ ์ํด ๊ฒ์ฆ๋ฉ๋๋ค.
์ด๊ฑฐ๋ signicat.com์ ์๋ต ์์์ ๋๋ค.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
Destination="https://yourspdomain/acs" ID="_c5bb9d944845c6ee1ddb85e59330ab36"
InResponseTo="_900A8CD85314D6317FA8C61B49D021DA" IssueInstant="2021-03-09T15:42:11.907Z" Version="2.0">
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">https://yourbrokerdomain/broker/sp/saml
</saml2:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
... XML Signature ...
</ds:Signature>
<saml2p:Status>
<saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</saml2p:Status>
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="_f940b40421a7330f9b63e381bf8f1844"
IssueInstant="2021-03-09T15:42:11.914Z" Version="2.0">
<saml2:Issuer>https://yourbrokerdomain/broker/sp/saml</saml2:Issuer>
<saml2:Subject>
<saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
NameQualifier="https://was-preprod1.digid.nl/saml/idp/metadata">900026261
</saml2:NameID>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml2:SubjectConfirmationData InResponseTo="_900A8CD85314D6317FA8C61B49D021DA"
NotOnOrAfter="2021-03-09T15:44:11.921Z"
Recipient="https://yourspdomain"/>
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions NotBefore="2021-03-09T15:42:06.921Z" NotOnOrAfter="2021-03-09T15:44:11.921Z">
<saml2:AudienceRestriction>
<saml2:Audience>https://yourspdomain</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AttributeStatement>
<saml2:Attribute Name="OriginalResponse">
<saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9Il84ZTdmZDIxMDYwNmMwNzc1ODZmMmE3Mjg0ZjhjM2ZjMDdhNjEzZmVkIiBJc3N1ZUluc3RhbnQ9IjIwMjEtMDMtMDlUMTU6NDI6MTFaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj48c2FtbDpJc3N1ZXI+aHR0cHM6Ly93YXMtcHJlcHJvZDEuZGlnaWQubmwvc2FtbC9pZHAvbWV0YWRhdGE8L3NhbWw6SXNzdWVyPjxkczpTaWduYXR1cmU+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxkczpSZWZlcmVuY2UgVVJJPSIjXzhlN2ZkMjEwNjA2YzA3NzU4NmYyYTcyODRmOGMzZmMwN2E2MTNmZWQiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjxlYzpJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zOmVjPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9ImRzIHNhbWwgc2FtbHAgeHMiLz48L2RzOlRyYW5zZm9ybT48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55KzAxeGlFSmhXRS9zOGFXWW53bzM4clJhMzBKOW1oWVlnKzJBZnNFVDhnPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5FcHhUdGN1UFM3NXRYM1ZzWDQvaWd1RytoNzl3SGRFVTVjWFJJdHhaeDF6b2ZNeEkrQzBEUTdldnVzSU9TV1czK0lKNkd6SmNIWGRqdHJqUVA3OFpTdER1djZhWXdxbDUrU2M0cno5V2pWbkdCSlVUbnJLVHgzb2xxdkQzYVA1amVWUmhJVkk2TUYxVXExcG5pVXQxaDJNeG9RL0ZXZUlpUjg0RXU5Z3JrbzQ0ZDkvcGtEVy9taXA1bEIySUpTZWZzSzVtUmVTc3REZXJGWHg4L1B1ZnZTZ3NJTnIvVmNpQU1oUC91VzU4YU4vWFpOU0QrS0MvQkpGUDZsSU15UUwvMndwVU1xbkV5MERBYzUxNUNveXYvNDVoUWhJejdsZUR0SWtFd2Jid2VqRDlyNUFFcy9kbDhuQ3o4b3R5NFlyOXJKQ1N6U1U0ck51VE9xM0R1T0hXVkE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8+PGRzOktleU5hbWU+OTRiZWMxMGM5ZDZiYzJhN2U4OGJlODNjZDgxZmRmNGRkMTUxMTI1MjwvZHM6S2V5TmFtZT48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlHZ0RDQ0JHaWdBd0lCQWdJVWVhSkNITjVXWXBBWW0zT2I5NUsrK3d1VUtGNHdEUVlKS29aSWh2Y04KQVFFTEJRQXdVekVMTUFrR0ExVUVCaE1DVGt3eEVUQVBCZ05WQkFvTUNFdFFUaUJDTGxZdU1URXdMd1lEClZRUUREQ2hMVUU0Z1VFdEpiM1psY21obGFXUWdVSEpwZG1GMFpTQlRaWEoyYVdObGN5QkRRU0F0SUVjeApNQjRYRFRJd01URXdOREUxTURVeE1Gb1hEVEl6TVRFd05ERTFNRFV4TUZvd2dZWXhDekFKQmdOVkJBWVQKQWs1TU1SRXdEd1lEVlFRSERBaEVaVzRnU0dGaFp6RVBNQTBHQTFVRUNnd0dURzluYVhWek1STXdFUVlEClZRUUxEQXBCWm1RdUlFUnBaMmxFTVIwd0d3WURWUVFGRXhRd01EQXdNREF3TkRFMk5qa3dPVGt4TXpBdwpNREVmTUIwR0ExVUVBd3dXYzJGdGJDMXphV2R1TG5Cd01TNWthV2RwWkM1dWJEQ0NBU0l3RFFZSktvWkkKaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNajhrS2RvbzF0MDdORmkrRE1QKzg0RW9SZzlza3FmCm9pQXBiKzhJd1JJcFZqZUN1NnRZOVlzby9KYzlsbVBsekxkUkRLVE9qS2M3L3Rhc3dDTHYxaytpVXZOYQpoNXkwTWgzTURvVFdwMytRY1VxaW0wZUxuNmRVTU55TXFQME1RTHFJWFRoekVUVTVGeW5iYlR2Mjd2eFcKdHFKZFdQaWx2OUU5K04xOSt2cFJNZ2JpWjVtSWFyZmhBdXZlaWkxK21HQTlZWkYyak1zRG1mYW5KNEwwCnBMNE1KUjQ0RkNiczJjZTFuOTZZTmhaaVoxWGh0NVk0NmpYWHZwUWtIRnhXRGJBR2Fra21uQ2k4ejlEMApCQkVZUTJNY2VZejJkQndxd0R0WUZnV3E4OVhmTVhPazhOWjdyNjV4dTlHSjU2TzJ2M2xjSHF2d0RQWGYKZ3pZVjFnWDZwcjBDQXdFQUFhT0NBaFl3Z2dJU01Bd0dBMVVkRXdFQi93UUNNQUF3SHdZRFZSMGpCQmd3CkZvQVV1TlJNbjZoYmJ0b2xwMmlPNzR4R0d2NGZVMlV3T0FZSUt3WUJCUVVIQVFFRUxEQXFNQ2dHQ0NzRwpBUVVGQnpBQmhoeG9kSFJ3T2k4dmNISnZZM053TG0xaGJtRm5aV1J3YTJrdVkyOXRNQ0VHQTFVZEVRUWEKTUJpQ0ZuTmhiV3d0YzJsbmJpNXdjREV1WkdsbmFXUXVibXd3Z2RjR0ExVWRJQVNCenpDQnpEQ0J5UVlLCllJUVFBWWRyQVFJSUJqQ0J1akJDQmdnckJnRUZCUWNDQVJZMmFIUjBjSE02THk5alpYSjBhV1pwWTJGaApkQzVyY0c0dVkyOXRMMlZzWld0MGNtOXVhWE5qYUdVdGIzQnpiR0ZuY0d4aFlYUnpNSFFHQ0NzR0FRVUYKQndJQ01HZ01aazl3SUdScGRDQmpaWEowYVdacFkyRmhkQ0JwY3lCb1pYUWdRMUJUSUZCTFNXOTJaWEpvClpXbGtJRkJ5YVhaaGRHVWdVMlZ5ZG1salpYTWdVMlZ5ZG1WeUlHTmxjblJwWm1sallYUmxiaUIyWVc0ZwpTMUJPSUhaaGJpQjBiMlZ3WVhOemFXNW5MakFkQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUIKQlFVSEF3RXdYQVlEVlIwZkJGVXdVekJSb0UrZ1RZWkxhSFIwY0RvdkwyTnliQzV0WVc1aFoyVmtjR3RwCkxtTnZiUzlMVUU1Q1ZsQkxTVzkyWlhKb1pXbGtVSEpwZG1GMFpWTmxjblpwWTJWelEwRkhNUzlNWVhSbApjM1JEVWt3dVkzSnNNQjBHQTFVZERnUVdCQlNkZ25wcnp2REhmQWJYOWlJNmRiQWpQVmxaTmpBT0JnTlYKSFE4QkFmOEVCQU1DQmFBd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFCc1hJQVJCSGpBbng1dThTMVdjCjdybXQxOGx6ZHZkMUJkUVJvZ1NtQ3YyclZvUnJ5SnZLczNqMlhhRkpGTHZ6L0phSEkxdlRobmEzMS8yeApqR2xJVEc4ZTFYeDRwRGZ0WFlwdW1iV3BScTNVQVYrWmN2UDhVYTF2TFlPTjFSWSthOUVtYVFBOElUWE8KSzNhdjVSTW52M3VEb0h0Q2RCdnNCT0NabVphV1REZjRnbjhqWFdpcnlhbGt3ZUdFZXJiMDFRcGFPYTJ3CkJjNnJUZW5WSEE5R0s4UmIxQ0tWbmVxOHBKZFM4TmE3V0ZCalUxWnpxMjhMb3I0ZEVSSlhURzVRS1ROVwpDNEI1OHN0b2tEaW9nd2tWaGpiMjdVeTBzQ0puNXdOOTdPbVVSMlliUUhGSjlkbS9rcE5GK1B2M0tRekEKcjRGQkxmMUYzMzJaVVVFeGg5TGh3UGRtalFyOHZIcFA1Y0xmNldIc0VGQVpqN3M3U0xNbitybDl2WHp1Ck1LVXAwRWF1QjVjQjFUUHduclVKRTNCb0t6aS9GVUYyM1RHb1RXZnFqbFZmZ0NlR2MyL1JSY3BaVWxyTApTZ3BmRHBFNXAyTkltVUo2anFQc200L3RMWUc2Z1AxY0dEM3JObEVaeEV1RmVPRkh4L2dPVVRjQ0R4Y2cKTmRvbHJmRCtlZldwZHErWk1SdWd2aTVFZGoxUUFEYTRkNGVocnd4L0VJUUFBZ2hhcWxKTnN2S3hHLzFCCnJ5cmx6RHJKM3hyVnVYVEpFV2ZxM0VhK00xM2RFRFh2bmM1bmhRdDdnUFkwUzB5YnpCL01IbG1qQmZGTApmWHErZXVoUXRJWkRLNGJXaE5rbkI5MU15TkluWC9MQzJOeXdWNDdUUGZsdEY5TW5xT2ErWHVFeFhDWGgKdGErRAo8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRD5zMDAwMDAwMDA6OTAwMDI2MjYxPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJfY2MxOWUyNDE0OGNlZDA3OTg3MWEwYTJlMDg4ZGZlNmEiIE5vdE9uT3JBZnRlcj0iMjAyMS0wMy0wOVQxNTo0NDoxMVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9wa2lvLmJyb2tlci5uZy10ZXN0Lm5sL2Jyb2tlci9hdXRobi9kaWdpZC9hY3MiLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAyMS0wMy0wOVQxNTo0MDoxMVoiIE5vdE9uT3JBZnRlcj0iMjAyMS0wMy0wOVQxNTo0NDoxMVoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cHM6Ly9wa2lvLmJyb2tlci5uZy10ZXN0Lm5sL2Jyb2tlci9hdXRobi9kaWdpZDwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMjEtMDMtMDlUMTU6NDI6MTFaIiBTZXNzaW9uSW5kZXg9IjA2MGI4YTc0Njg1MTIxYTQ5YmY4ZDI3YjQ3Nzc4ZjY0NzU4NTEyMyI+PHNhbWw6U3ViamVjdExvY2FsaXR5IEFkZHJlc3M9Ijc3LjI0OC4yMjcuMTgzIi8+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlNtYXJ0Y2FyZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPg==
</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
<saml2:AuthnStatement AuthnInstant="2021-03-09T15:42:11.921Z"
SessionIndex="add33efd-9f37-48b2-a8a2-d6346c539307">
<saml2:AuthnContext>
<saml2:AuthnContextClassRef>urn:etoegang:core:assurance-class:loa3</saml2:AuthnContextClassRef>
<saml2:AuthenticatingAuthority>https://was-preprod1.digid.nl/saml/idp/metadata
</saml2:AuthenticatingAuthority>
</saml2:AuthnContext>
</saml2:AuthnStatement>
</saml2:Assertion>
</saml2p:Response>SAML ํธ๋ฌ์คํธ(Trust)
IdP์ SP ๊ฐ์ ๊ณต์ ๊ตฌ์ฑ์ผ๋ก, ํต์ ์ค์ ๊ฐ์๊ฐ ์๋ก๋ฅผ ์ธ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ธ์ฆ์๊ฐ ์์ต๋๋ค.
ํ๋ก๋น์ ๋
ID ์ ๊ณต์๋ ์ฌ์ฉ์์๊ฒ ์ง์ค์ ์์ฒ์ ๋๋ค. ๋๋๋ก ์๋น์ค ์ ๊ณต์์ ๋ณด๊ด๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ์ฌ ์ ๋ฐ์ดํธ๋ ์ ๋ณด๋ฅผ ์ป์ด์ผ ํฉ๋๋ค. ์ด๋ ์ ์ ํ๋ก๋น์ ๋(Just-in-time provisioning) ๊ณผ ์ค์๊ฐ ํ๋ก๋น์ ๋(real-time provisioning) ์ ํตํด ์ํํ ์ ์์ต๋๋ค.
- ์ ์ ํ๋ก๋น์ ๋: ์๋น์ค ์ ๊ณต์๊ฐ ํ์ฌ ์ฌ์ฉ์๊ฐ ์์ฒญํ๊ณ ์ธ์ฆํ ๊ณ์ ์ด ๋ด๋ถ์ ์๋ ๊ฒฝ์ฐ, JIT๊ฐ ์๋ํ์ฌ ์ ๊ณ์ ์ ํ๋ก๋น์ ๋ํฉ๋๋ค. ๋ํ ๊ณ์ ์ ์ ๋ฐ์ดํธํ ์ฑ ์์ด ์์ต๋๋ค.
- ์ค์๊ฐ ํ๋ก๋น์ ๋: ํธ์ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ก ์๋ํฉ๋๋ค. IdP ์ธก์์ ๊ณ์ ์ด ์์ฑ/์ ๋ฐ์ดํธ๋๋ฉด ํด๋น SP์ ํ์ ์์ฒญ์ด ์ด๋ฃจ์ด์ ธ ๊ณ์ ์ ์์ฑ/์ ๋ฐ์ดํธํฉ๋๋ค. ์ค์ ์ก์ธ์ค๋ฅผ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค.
๋ฉํ๋ฐ์ดํฐ(Metadata)
IdP์ SP๊ฐ ์ค์ค๋ก๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ๊ณต์ XML ๊ตฌ์ฑ ์ฒญ์ฌ์ง. ์ธ์ฆ์๋ ์ฌ๊ธฐ์ ๋ฃ์ ์ ์์ต๋๋ค. ์ด๋ ํธ์ ๊ธฐ๋ฅ์ ๊ฐ๊น์ต๋๋ค.
<ds:NameIDFormat>urn:oasis:names:tc:saml:1.1:nameid-format:unspecified</ds:NameIDFormat>
<ds:NameIDFormat>urn:oasis:names:tc:saml:1.1:nameid-format:emailaddress</ds:NameIDFormat>
<ds:X509Certificate>ABCDEFG</ds:X509Certificate>์ต์ฝ์
SAML์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํ๋์ง ์์ผ๋ฉด ์ ์ฉ๋ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์ฝ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์๋ชป๋ ์ด์ค์ ๊ฒ์ฆ
- ๋น์ ํต XML ํ์(parser)
SAML์ ๊ตฌํํ ๋ ์ฐธ๊ณ ํ ์ ์๋ ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- XML ๊ตฌ๋ฌธ ๋ถ์ ๊ธฐ๋ฅ์ ์ ํํฉ๋๋ค.
- ํ์คํ๋(canonicalized) SAML์ ์ฌ์ฉํ์ธ์
- XML โโ์๋ต์์ ์คํค๋ง ๊ฒ์ฆ
- XML โโ์๋ต์์ ๋ชจ๋ ์๋ช ๊ฒ์ฆ
- ํ์ฉ ์๊ณ ๋ฆฌ์ฆ ์ ํ
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> - SSL (HTTPS)๋ฅผ ์ฌ์ฉํ์ธ์
- ๋ฐ์ ์์ ์์ ์๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
- ๊ฒ์ฆ ์ฐฝ ์ ์ฉ
- ๊ธฐ๋ก ์บ์ ์์ฑ
- ๋ฒํผ ํฌ๊ธฐ ์ ํ
์์ถฉ๋๋ ์ฃผ์ฅ
์ผ๋ถ ์ถ์ฒ์์๋ SAML์ด ์ธ์ฆ๊ณผ ๊ถํ ๋ถ์ฌ ๋ชจ๋์ ์ฌ์ฉ๋ ์ ์๋ค๊ณ ๋งํ์ง๋ง ์ผ๋ถ ์ฌ์ดํธ์์๋ ๊ถํ ๋ถ์ฌ์ ๋ํ ์ฌ์ฉ์ ๋ถ์ธํฉ๋๋ค.
๋ ผ๋ฆฌ์ ์ผ๋ก ์๊ฐํ๋ฉด, SAML์ ์ฃผ๋ก SSO์ ์ฌ์ฉ๋๋ฏ๋ก IdP๋ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๊ณ SP๋ ๋์ ๋ด๋ถ์ ์ผ๋ก ๊ถํ์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ํ์ง๋ง ์ ๊ฐ ์ง์ SAML ํตํฉ์ ๊ตฌํํ๊ธฐ ์ ๊น์ง๋ ํ์คํ ๋งํ ์ ์์์ต๋๋ค.
๋๊ตฌ
SAML ๊ฐ๋ฐ ํ ๋ ์ ์ฉํ ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.