SSO URL의 파라미터로 SAML Request를 생성하여 전달한다.
Developer Console의 SAML Apps 등록 시 발급되는 SSO URL을 이용한다.
예) https://NAVERWORKS인증시스템URL/saml2/idp/mycompany.com
GET 또는 POST
참고
- GET과 POST로 전송할 때 각각 SAML Request 인코딩 방식이 다르다. 아래 Request 항목을 참고한다.
| 파라미터 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| SAMLRequest | String | Y | SAML 2.0 Request 명세에 따른 문자열 - GET으로 전달한 경우: Deflate + Base64로 인코딩 - POST로 전달한 경우: Base64로 인코딩 |
| RelayState | String | N | 인증 실패 시 재시도하는 URL |
<?xml version="1.0" encoding="UTF-8"?><saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceURL="{NAVER WORKS에 등록한 ACS URL}" ID="{ID}" IssueInstant="{SAML Request 생성 일시}" ProtocolBinding="{Protocol Binding}" ProviderName="{Service Provider Name}" Version="2.0"> <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">{NAVER WORKS에 등록한 SP Issuer}</saml2:Issuer> <saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/></saml2p:AuthnRequest>SAML Request의 각 항목은 다음과 같다.
| 항목 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| AuthnRequest AssertionConsumerServiceURL | String | Y | 줄여서 ACS URL이라 하며, SAML Response를 받을 URL이다. Developer Console에 등록한 ACS URL과 동일해야 한다. |
| AuthnRequest ID | String | Y | 고객사에서 발행하는 ID로, SAML Response 생성 시 사용한다. |
| AuthnRquest IssueInstant | Date(UTC) | Y | SAML Request 생성 일시 |
| AuthnRequest ProtocolBinding | String | Y | SAML Response를 받을 형태를 명시한다. 아래의 "Protocol Binding"을 참고한다. |
| AutnnRequest ProviderName | String | N | 고객사명 |
| Issuer | String | Y | Developer Console에 등록한 SP Issuer(Entity Id)를 사용한다. |
| NameIDPolicy Format | String | Y | NAVER WORKS에서는 "UNSPECIFIED"를 고정값으로 사용한다. |
| 항목 | 설명 |
|---|---|
| urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST | SAML Response를 Base64 인코딩하여 POST로 전달받는다. |
| 그 외 | SAML Response를 Deflate + Base64 인코딩하여 GET으로 전달받는다. |
<?xml version="1.0" encoding="UTF-8"?><saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceURL="https://example.com/acs/vendor.com" ID="fiokocckbjonklcjiepfejmoehpebebmholeoibp" IssueInstant="2018-02-25T07:42:35Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" ProviderName="example.com" Version="2.0"> <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">SPIssuer</saml2:Issuer> <saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/></saml2p:AuthnRequest>