최신 업데이트:2022-06-09 12:17:17
SAML2.0 기반 SSO 프로세스에서 기업 사용자가 IdP에 로그인할 때 IdP는 SAML statement을 포함하는 인증 응답을 생성하고 브라우저로 씨디네트웍스에 자동으로 전달한다.이 SAML statement은 사용자의 로그인 상태를 확인하고 로그인 대상을 해석하는 데 사용된다…따라서 SAML응답에는씨디네트웍스에 필요한 element가 포함되어야 한다. 그렇지 않으면 로그인 사용자를 식별할 수 없으므로 SSO가 실패한다.
<saml2p:Response>
<saml2:Issuer>${entityID}</saml2:Issuer>
<ds:Signature>
…
</ds:Signature>
<saml2p:Status>
…
</saml2p:Status>
<saml2:Assertion>
<saml2:Issuer>${entityID}</saml2:Issuer>
<ds:Signature>
…
</ds:Signature>
<saml2:Subject>
<saml2:NameID>${NameID}</saml2:NameID>
<saml2:SubjectConfirmation>
…
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions>
<saml2:AudienceRestriction>
<saml2:Audience>${Audience}</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement>
…
</saml2:AuthnStatement>
<saml2:AttributeStatement>
<saml2:Attribute Name="https://login.cdnetworks.com/SAML/Attributes/LoginName" >
…
</saml2:Attribute>
<saml2:Attribute Name="https://login.cdnetworks.com/SAML/Attributes/RoleSessionName">
…
</saml2:Attribute>
…
</saml2:AttributeStatement>
</saml2:Assertion>
</saml2p:Response>
항목 | 설명 |
---|---|
Issuer | Issuer 값은 엔티티와 일치해야 한다. 씨디네트웍스에서 생성한 ID 제공자가 엔티티에 업로드된 IdP 메타데이터 파일의 ID입니다. |
Signature | SAML Assertion에는 변조가 없도록 서명해야 하며 시그너처 및 포함된 element는 시그너처 값 및 시그너처 알고리즘과 같은 정보를 포함해야 한다. |
Subject |
Subject 필수 포함 요소. 1) NameID element가 하나밖에 없습니다.NameID의 값은 일반적으로 SAML 단언 주체가 IdP에서 ID(IdP 내부 계정 이름 또는 계정 ID가 될 수 있음)로 CDNetworks는 이 요소에 의존하지 않는 값으로 로그인 주체를 확인한다. 2) 단 한개의 SubjectConfirmationData element를 포함한 SubjectConfirmation element가 1개만 있어야 한다. 그리고, SubjectConfirmationData에는 다음과 같은 두개의 Attribute가 있어야 한다. NotOnOrAfter: SAML Assertion의 유효기간 Recipient:CDNetworks가 해당 element의 값을 검사하여 CDNetworks를 이 SAML Assertion의 대상 수신자임을 확인한다. 값은 >https://login.cdnetworks.com/cas/login?client_name=${provider}。 다음은 Subject 요소의 예시입니다.: <saml2:Subject> <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">admin</saml2:NameID> <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <saml2:SubjectConfirmationData InResponseTo="_adafdaxfrpqkrf4cpnkfslpgxf76qeqmlwtag" NotOnOrAfter="2021-04-29T18:57:29.367Z" Recipient="https://cas.wangsu.com/cas/login?client_name=mockClient"/> </saml2:SubjectConfirmation> </saml2:Subject> |
Conditions |
Condition element에서는,필수항목인 AudienceRestriction element에는 한개 이상의 Audience element가 있어야 하며,Audience element에는 https://login.cdnetworks.com을 가지고 있어야 한다. Conditions element 예시는 아래와 같다.: <saml2:Conditions> <saml2:AudienceRestriction> <saml2:Audience>https://cas.wangsu.com</saml2:Audience> </saml2:AudienceRestriction> </saml2:Conditions> |
SAML Assertion의 AttributeStatement element에는 다음과 같은 Attribute element가 포함되어야 한다.
<saml2:Attribute Name="https://login.cdnetworks.com/SAML/Attributes/LoginName" >
<saml2:AttributeValue>wsc:iam::${parentLoginName}:login-name/${loginName},wsc:iam::${parentLoginName}:saml-provider/${provider}</saml2:AttributeValue>
<saml2:AttributeValue>wsc:iam::${parentLoginName}:login-name/${loginName},wsc:iam::${parentLoginName}:saml-provider/${provider}</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="https://login.cdnetworks.com/SAML/Attributes/RoleSessionName">
<saml2:AttributeValue>${NameID}</saml2:AttributeValue>
</saml2:Attribute>
다음은 RoleSessionName의 Attribute element 예제이다.
<saml2:Attribute Name="https://login.cdnetworks.com/SAML/Attributes/RoleSessionName">
<saml2:AttributeValue>admin</saml2:AttributeValue>
</saml2:Attribute>