IdP SAML Request 요청 시 페이지를 찾을 수 없음 문제
안녕하세요. 위의 문서를 보면서 NAVER WORKS 아이디로 로그인(idP) 을 구현중인 한 개발자입니다.
관련 개발 문서를 보며 따라하고 있는데
SAML Request를 보내면은 계속 페이지를 찾을 수 없음
오류페이지가 표출되며 원인을 알 수가 없어 문의드립니다.
개발자 콘솔에서 SAML Apps을 등록하였고 활성 상태로 변경하였으며
TEST 버튼 클릭 시 SAMLResponse는 잘 받아오는 상태임을 확인했습니다.
등록한 앱의 필수 정보는 다음 예시로 하겠습니다.
Application Name : companyname-test
ACS URL : http://192.168.1.22:8080/auth/idp(개발용으로 사용중인 로컬호스트 웹 URL 입니다.)
SP Issuer (Entity Id) : companyname-issuer
NAVER WORKS Identity Provider 정보에서 확인한
SSO URL은 다음과 같습니다.
https://auth.worksmobile.com/saml2/idp/[companyName].com
이제 SAML Request 명세를 참고하여 파라미터를 만들기 위해
문서를 참고하여 다음과 같이 코드 상에 문자 타입으로 입력하였습니다.
|
저는 HTTP GET METHOD를 사용할 것이기에
AuthnRequest ProtocolBinding 는 넣지 않았습니다.
이 XML을 파이썬 상에서
문자열 변환 > Deflate 압축 > Base64 인코딩 처리하였습니다.
# Python Deflate + BASE64 Encoding # SAML Request XML 템플릿 saml_request_template = f""" <?xml version="1.0" encoding="UTF-8"?> <saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceURL="{acs_url}" ID="{random_id}" IssueInstant="{issue_instant}" ProtocolBinding="" ProviderName="{provider_name}" Version="2.0" > <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">{sp_issuer}</saml2:Issuer> <saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/> </saml2p:AuthnRequest> """ # Deflate 압축 후 Base64 인코딩 # [2:-4] 헤드,테일 체크섬 슬라이싱 제거 compressed_request = zlib.compress(saml_request_template.encode('utf-8'))[2:-4] encoded_data = base64.b64encode(compressed_request) base64_encoded_request = encoded_data.decode('utf-8') # SAMLRequest를 GET 파라미터로 추가하여 IdP URL 구성 sso_url = "https://auth.worksmobile.com/saml2/idp/[companyName].com" idp_url = f"{sso_url}?SAMLRequest={base64_encoded_request}" |
HTTP GET METHOD로 요청시 보내는
SAMLRequest 파라미터의 최종 문자값은 다음과 같습니다.
fZFdb8IgFIb/CuG+LSXGdMTWuBkTE7cYP3axOwJUycrHgFb998NaF3exXQGHl/Oc92UyPasGdMJ5aXQJ8xRBIDQzXOpDCfe7RVLAaTXxVDXYklkbjnojvlrhA4gPtSe3mxK2ThNDvfREUyU8CYxsZ68rglNErDPBMNNAMPNeuBBRL0b7Vgm3Fa6TTOw3qxIeQ7Aky/InnObjIs1TjEmBCpTRiM0ktxAs5yWUuu5OUp0uxgorjqxT/JMepKFdXLg5cRpqptg5qr1vxVL7QHUoIUZ4lCCc5OMdGpHRmKDiA4L1MNuz1DfPfamTXLi3aKSEzChL9eV6SOMegvd7WNEaHKIhPco9ZvJ/JPQeBKwGwFWTyL7NJHts+pP+dYTlfG0ayS5gYZyi4W9InuZ9RfKk7qWk1d4KJmspOMyqgfH7T6tv |
SSO URL을 통해 요청을 보내는 주소는 다음과 같습니다.
https://auth.worksmobile.com/saml2/idp/[companyName].com?SAMLRequest=fZFdb8IgFIb/CuG+LSXGdMTWuBkTE7cYP3axOwJUycrHgFb998NaF3exXQGHl/Oc92UyPasGdMJ5aXQJ8xRBIDQzXOpDCfe7RVLAaTXxVDXYklkbjnojvlrhA4gPtSe3mxK2ThNDvfREUyU8CYxsZ68rglNErDPBMNNAMPNeuBBRL0b7Vgm3Fa6TTOw3qxIeQ7Aky/InnObjIs1TjEmBCpTRiM0ktxAs5yWUuu5OUp0uxgorjqxT/JMepKFdXLg5cRpqptg5qr1vxVL7QHUoIUZ4lCCc5OMdGpHRmKDiA4L1MNuz1DfPfamTXLi3aKSEzChL9eV6SOMegvd7WNEaHKIhPco9ZvJ/JPQeBKwGwFWTyL7NJHts+pP+dYTlfG0ayS5gYZyi4W9InuZ9RfKk7qWk1d4KJmspOMyqgfH7T6tv |
SAML 디코딩을 해주는 사이트에서도 저의 SAMLRequest 파라미터 문자를 디코딩해도 잘 되는데
왜 페이지를 찾을 수 없음이 발생하는지 원인을 도저히 알 수가 없습니다만 무언가 빠지거나 놓친 것이 있을까요?
본래 정상적인 상황이라면 어떤 화면이나 인터페이스가 표출되나요?
게시글에 새로운 댓글이 달리면 알림을 전송합니다.
댓글4
업데이트 된 답글입니다.
alle
https://developers.worksmobile.com/kr/docs/sso-idp-request#idp-request-body
2024.02.16
업데이트 된 답글입니다.
dfqyzcmgxpuc07fhlxcw 작성자
마찬가지로 같은 오류가 발생하고 있습니다.
해당 사항 수정해서 본문에 반영하겠습니다.
2024.02.16
업데이트 된 답글입니다.
devwf
SAML Request 할 때 이미 url encoding 한 상태면 content-type : x-www-form-url-encoded 으로 했을 때 브라우저에서 url encoding이 되어 총 2번 인코딩이 된 상태로 전달된다고 하는 내용이 있더라구요
2024.02.16
업데이트 된 답글입니다.
dfqyzcmgxpuc07fhlxcw 작성자
브라우저 개발자 도구로 request header를 확인해봐도
content-type : x-www-form-url-encoded 관련된 설정은 없었습니다.
포스트맨이나 파이썬 상에서 request로 똑같이 요청해봐도
똑같이 페이지를 찾을 수 없다는 에러가 나오네요.
2024.02.16
궁금한 점을 해결하지 못하셨나요?
지금 바로 NAVER WORKS 사용자들에게 물어보세요!