라벨이 Django인 게시물 표시

[ Architecture, Technology ,Web ] SSO(Single Sign On) 그리고 SAML에 대해

이미지
이번 프로젝트 내부에서 어쩌다보니  유저 인증 관련 업무를 담당하게 되었고, 해야하는 업무는 내부에 사용했던 적이 없던  새로운 개발 플랫폼에서  SSO의 프로토콜 중  SAML을 이용해 앱의 인증을 구현해야만 했다. SSO를 생각해본적 조차 없는 상황에 이를 새로운 개발 플랫폼에 도입해야 했기 때문에 많은 시행착오를 겪었으나 구현에 성공하였으며 덕분에 SSO에 대한 전반적인 지식을 쌓을 수 있었다. 이번에는 그러한 과정에서 나온 지식들과 경험을  공유하고자 한다. SSO에 대한 정의 먼저 사전적 정의 부터 살펴보자. 다만, 기술적인 용어다보니 자주 사용하는 옥스포드 사전에 정의를 찾을 수 없기 때문에  검색으로 찾을 수 있는 정의를 몇 가지 살펴보고 교차 검증을 해보자. 첫 번째 정의를 살펴보자. Single sign-on (SSO) is an identification method that enables users to log in to multiple applications and websites with one set of credentials.  SSO는 웹사이트에서 한 번의 인증(one set of credentials)으로 복수의 어플리케이션에 로그인 할 수 있는 인증(identification) 방법(method) 이다. 두 번째는 위키피디아의 정의이다. Single sign-on (SSO) is an authentication scheme that allows a user to log in with a single ID to any of several related, yet independent, software systems. SSO는 독립적이지만 연관되어있는 몇몇 소프트웨어에 대해 하나의 ID로 로그인을 할 수 있도록 하는 인증 구조(scheme) 세부 설명에 조금 차이가 있어 보이지만 전체적인 틀은 매우 비슷해 보인다.  몇 가지 포인트가 되는 단어를 추출해 이를 연결해보자면 아래와 같은 의미를 산출 할 수 있다. 독립적이지만 연관되어 있

[ Django, Database, Algorithm, Data Structure ] Django에서 중첩된 댓글 기능 구현의 대한 솔루션에 대해

이미지
이전 글을 통해  ( https://nitro04.blogspot.com/2020/09/database-algorithm-data-structure-db.html ) 인접 리스트 모델과 MTPP에 대해 알아봤다. 하지만 결국 현재로서는 어느 것이  최적의 솔루션인지를 판단하기는 힘들다. 물론 이에 대해 새로운 모델을 만든다면  최고겠지만,이는 엔지니어의 몫은 아니며 컴퓨터 과학의 수 많은 학자들의 몫이다. 따라서 엔지니어 몫은 둘 중 어느것이  해당 시스템에 적절한지에 대해 판단해야 한다. 그렇다면 어떤 것이 적절할까? 이에 대한 해답으로  현재 인기가 많은 프레임 워크 중 하나인 Django에서는  어떤 방식을 채택하고 있는지에 대해 엿본다면  이에 대한 힌트를 얻을 수 있을 것이다. 다만 해당 프로젝트는 프레임 워크라 이야기하고 있지만 나는 이를 API로 부르려고 하는데 왜냐하면 웹 서버 프레임 워크와 혼동을 피하기 위함이다. 실제 이 APP은 프레임 워크의 속성인 오버라이딩을 지원하고 있기 때문에  사실 프레임 워크라고 불러도 상관 없다고 생각한다. 이에 대해 관심이 있다면 이전에 포스팅한 아래의 글을 참고해보길 바란다.  https://nitro04.blogspot.com/2020/07/essay-technology-apiapplication.html Django의 중첩된 댓글 기능 API 현재 Django에서는 공식적으로  이 중첩된 댓글 기능에 대해 지원하지 않고 있다. 다만, 과거 Django 1.6에서는 이를 지원하고 있다는 사실은 위에 Django 1.6 공식 도큐먼트에서 확인할 수 있다. 어떤 이유에서 인지는 정확히 명시하지 않고 있기 때문에  알 수 없지만 Django 1.6 이후 부터는  위와 같이 새로운 프로젝트로써 분리되었음을 알 수 있다. 추측해 보자면 과거 MTPP를 사용한 API로서 넣었으나  이전 글에서도 언급했다시피  MTPP 또한 성능면에서는 여전히 좋다고는 할 수 없기 때문에  논란이 많아 떨어져나갔다고 추측해 볼 수 있을