[ 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) 세부 설명에 조금 차이가 있어 보이지만 전체적인 틀은 매우 비슷해 보인다.  몇 가지 포인트가 되는 단어를 추출해 이를 연결해보자면 아래와 같은 의미를 산출 할 수 있다. 독립적이지만 연관되어 있

[ Essay - Redefinition, Essay - Intuition ] 휴식에 대해

서론

삶을 살아가면서 
공통적으로 깨달아가는게 몇 가지 있는데  
그 중 하나가 아마 휴식의 인식에 변화가 있을 것 이다.

왜냐하면
어린 시절의 나의 휴식에 대한 생각은 
단지 내가 좋아하는 것을 하는 시간에 불과했고
이는 굉장히 기분에 따라 즉흥적이였기 때문이다.

하지만, 지금은 다르다.

단순히 내가 좋아하는 것을 한다고 하더라도
잘 휴식을 취했다고 볼 수 없다.

누구든 이러한 경험이 있지 않은가?

물론 이에 대한 명확한 근거를 제시할 수는 없지만
분명 주말에 내가 좋아하는 것들을 했음에도 
하루 종일 잠을 자거나 아무것도 하지 않았음에도 불구하고

즉, 휴식을 취했음에도 불구하고 
왜 월요일에는 그토록 피곤했던 경험 말이다.

아마 어떠한 사람에게는 매주 월요일이 
그러할 지도 모르겠다.

왜 그럴까? 

이번에는 이 휴식에 대한 이야기를 나누어보자.

휴식에 정의


물론 서론에서 이야기한 
'스스로 좋아하는 것'을 하는 것 또한 
휴식에 한 가지 요소라고 볼 수 있다.

하지만, 이 것 하나 만으로는 
잘 휴식을 취했다고 보기는 매우 힘들기 때문이다. 

그렇지 않은가?

왜냐하면 아무리 그런식으로 휴식을 취했다고 한들
다음날 피곤해서 제대로 된 일을 할 수 없는 
경우는 누구나 경험하기 때문이다.

그렇기 때문에 이야기에 들어가기 앞서
휴식에 대한 재정의가 필요하다.

그렇다면 이쯤에서 옥스포드 사전에 정의를 살펴보자.

일반적으로 영어로 휴식은 Rest[1] 이며 
이에 대한 정의는 아래와 같다.

a period of relaxing, sleeping or doing nothing after a period of activity
일정 기간 활동 후 잠을 자거나 아무것도 하지 않는 해소하는(relaxing) 기간

나는 이 정의 중 집중하고 싶은 단어가 있는데 
바로 Relaxing이다.

나는 이 단어가 휴식이라는 
한 단어를 잘 나타내는 키라고 생각 한다. 

곧 바로 Relaxing[2] 에 대한 정의를 살펴보자.

helping you to rest and become less anxious
휴식과 불안감을 덜어주는데 도움을 주는 것

Relaxing의 정의에서 Rest(휴식)이라는 단어가 
한번 더 언급되며 
불안감을 덜어준다는 의미가 보이는데
바로 이 것이 휴식의 핵심이다.

불안감을 덜어주어야만 진정으로 
휴식을 했다고 할 수 있으며, 
동시에 가능한 지속 가능 해야만 한다.

따라서 활동과 비활동과 관계 없이 
불안감을 덜어줄 수 있는 행위 전체가 
전체적인 휴식의 프레임이다.

그리고 이 프레임 안에 
무수한 요소들이 있을 수 있으며
시대에 따라 사회의 상황에 따라 그리고 
개인에 상황에 따라
이런 요소들이 나타나고 사라질 것이며

이러한 조건에도 불구하고 사라지지 않는 요소가 
바로 '보편적인 휴식 방법'이라 부를 수 있으리라

이 중 하나가 서론에서 언급했던
'좋아하는 것을 하는 것'이 될 수 있다.

나의 이런 휴식에 대한 정의에 
완벽하지 않더라도 어느 정도 수긍한다면 
우리는 다음 단계로 넘어갈 수 있을 것이다.

휴식의 분류


좀 더 심도있는 대화를 위해 간단하게 분류해보자.

일반적으로 '육체적 휴식'과 '정신적 휴식' 
이 두 가지로 분류해볼 수 있을 것이다.

좀 더 분류해볼 수는 있겠지만,
일반적으로 누구든 생각해 볼 수 있는 분류이고 
이번 주제에 벗어나기 때문에
이 걸로 만족하고 넘어가자.

먼저 육체적 휴식이다.

육체적 휴식에는 무엇이 있을까?

당연하게도 '잠'이 여기에 포함될 것이고
Rest의 정의에서도 보이듯이 '아무것도 하지 않는 것' 또한
이 육체적 휴식에 포함될 것 이다.

과거야 어찌되었든 현재만 놓고 본다면
우리는 이미 육체적 휴식을 충분히 취할 수 있다.

일반적으로 근무시간이 정해져있으며,
주말이라는 휴일이 이틀 정도 주어진다.

따라서 육체적인 불안감을 해소할 시간은
이미 충분히 주어졌다고 볼 수 있다.

그렇기 때문에 나는 여기서 
이 육체적 휴식에 대한 이야기는 하지 않으려고 하며
정신적 휴식에 집중 하려고 한다.

정신적 휴식에 대해

그렇다면 정신적 휴식이란 무엇일까?

단어만 보더라도 얼핏 이미지가 
떠오르는 사람이 있으리라 생각 된다.

내 생각에는 떠오르는 그 이미지가 
정신적 휴식에 해당하며
한 가지 요소가 된다고 생각 한다.

이제는 정의에 벗어나서 어떤 것을 했을 때, 
정신적 휴식을 취했다고 
볼 수 있는지에 대한 이야기를 해보자.

내 이야기를 조금 해보겠다.

나의 여러가지 취미 중 하나는 게임을 하는 것이다.
한국의 남성들이 그러하듯이 말이다.

그리고 이에 매우 심취해있던 시절이 있었는데 
그 당시에 게임을 하는 것은 
위에서 정의한 휴식에 해당한다.

왜냐하면 그 행위가 
나의 불안감을 해소해주었기 때문이다.

왜 나에게 게임을 하는 것은 휴식이였을까?

즉, 어째서 게임을 하는 행위는 
어떻게 나에게 정신적인 불안감을 해소해주었을까?

핵심은 이 간단한 질문에 대한 대답에 있다.

나의 이야기를 이어가보자.

그 당시 
아마 이 이야기는 나 뿐만아니라 
내 또래나 심지어 지금 10대 또한 해당될지도 모르겠다.

바로 성취에 대한 불안감이다.

환경적으로 한국의 10대, 20대는 
성취에 대한 불안감을 가질 수 밖에 없는 환경에 놓여있다.

필연적으로 한국의 10대, 20대는 
테스트에서 좋은 점수를 받기 위해 
끊임없이 활동해야 되기 때문이다.

이런 테스트에 좋은 점수를 받기에는 
환경적으로 성격적으로 
즉, 적성적으로 맞지 않을 수 있기 때문이다.

테스트가 아니라도 어떠한 행위도
적성에 맞지 않는 상태에서 
성취를 이루는 것은 매우 힘들다.

어떤 한 축구 선수가
프로 선수로서 경기에 뛸 수 있는 것은
해당 종목에 대해 적성이 거의 오차 없이 맞기 때문이다.

그렇지 않은가?

일반인들과 비교해 
매일 같이 강도 높은 훈련을 견딜 수 있고
육체적/정신적 팀 워크에 매우 뛰어남 등 

스스로가 좋든 싫던
여러가지 조건들이 있을 것이고
이 사이에서 성취감을 느껴야 한다.

예컨데, 프로 축구 선수가 
되고 싶어 유소년 축구팀에 들어간
어떤 한 아이가 있다고 가정해보자. 

매일 같이 남들과 같은 강도 높은 훈련을 하고
남아서 개인 훈련 까지 한다고 생각해보자.

하지만 어째서 인지 경기에 
선발로 출전 할 수 없었다.

이 경우 이 아이는 성취감을 
전혀 느낄 수 없을 것이다.

자신의 기대치와 현실의 갭이 벌어졌기 때문이다.

물론 어떤 사람은 이 아이가 
좀 더 노력하지 않았거나 
지나치게 욕심이 많다고 이야기 할지도 모르겠다.

하지만 그렇기 이야기하는 그들 조차 
어떤 것을 그리고 얼마나 더 노력을 해야하지는 이야기 하지 않는다.

그런 이야기는 스스로 
명확한 솔루션을 가지고 있을 때 성립한다.

이 갭이 벌어졌을 때 어떠한 행동을 하는지 또한 
이러한 프로 축구 선수가 될 수 있는 
적성에 포함될 것 이다.

아마 사람들은 이 모든 것을 포함해 재능이라 부르는 것으로 보인다.

여기서 포기하는 사람이 있는 반면
어떤 사람은 도저히 미래가 보이지 않음에도
어떠한 확신을 가지고 더욱더 해보겠다는 
의지를 가지는 사람도 있으니 말이다.
(물론 더 해보겠다고 하더라도 프로 축구 선수가 된다는 보장은 없다)

또한 이 외에도 많은 것들이 있을 것이며
좋든 싫던 간에 어느 정도 
이러한 조건에 적합하지 않다면
훌륭한 스포츠 프로 선수는 될 수 없을 것이다.

이 적성이 존재한다는 사실은 
그 누구도 부정하지 않으면서도

이 테스트 점수에 있어서는 
왜 이리 까다로운지 신기할 따름이다.

의심가는 부분은 있으나 
나는 아직까지 이에 대한 해답을 찾지 못했다.

어쨋든 이 테스트 점수를 위한 행동에 
적성이 없는 대부분의 10대, 20대에게 있어서 
성취라는 것이 존재할리가 있겠는가?  

적성이 없다면 재능이 있건 없건
지속불가능하기에 성취감은 물론이고 
좋은 결과를 가져오기란 매우 힘이 들 것이다.

따라서 이 성취감을 대신할 수 있고 
접근성이 좋은 행동에 몰릴 수 밖에 없는 것이다.

특히 고등학생 3년에 치루는 
단 한번에 테스트가 인생을 가르는 중요한 시험이니 
더더욱 몰릴 수 밖에 없을 것이다.

그것이 한국에서는 게임이다.

게임 업계의 비지니스에 발달로 
컴퓨터 혹은 스마트폰과 인터넷만 있다면 
손에 돈이 없더라도 손쉽게 할 수 있게 되었으니 
접근성에 대해서는 더 말할 것도 없을 것이다.

여유 자금이 없는 10대, 20대에게 
이 만큼 접근성이 뛰어난 것이 또 있을까?

게임은 정해진 룰만 이해한다면 
높은 성취를 이룰 수 있으며,

현재에 와서는 이 게임의 룰은 
비지니스화가 훌륭히 이루어져 
높은 매상을 위해
유저에게 더 높은 성취감을 주기 위해
이 룰은 더 정교해졌고, 
정교해진 룰로 인해 유저는 
새롭고 다양하게
그리고 과거보다 더 높은 성취감을 줄 수 있게 되었다.

따라서 적성에 의해 테스트에서 
좋은 점수(특히 상대평가라면 더더욱)를 받기 힘든 
대부분의 사람들에게 게임이라는 행위는 
매우 좋은 정신적 휴식처가 된다.

현실에서 얻을 수 없는 성취감에 대한 불안감을
게임을 함으로써 해소하고 얻어낼 수 있기 때문이다.

물론 좋은 점수를 받은 사람들은 
이러한 성취가 필요 없을 것이다.

눈앞에 보이는 높은 점수라는 성취감과 
여기에 더불어 사회에서의 높은 평가와 좋은 인식

그리고 기대할 수 있는 본래의 보상 보다 
더 높은 보상은  본래의 성취감보다 
더 높은 성취감을 가져다주기 때문에 
그들은 여기서 가장 중요한 성취감에 대해서 걱정할 필요가 전혀 없다.
(상대적인 테스트라면 이야기가 다를 수는 있지만
본질은 변하지 않는다)

물론 자신의 미래를 
어린 아이들에게 판단을 맡기기에는 
다소 리스크는 있으나 
그것이 특별히 테스트여야만 하는 이유는 전혀 없다.

또한 테스트라는 한 가지 길만 있는 것 그리고 
그 속에서 높은 평가를 받아야 한다는 것은
어린 세대들에게는 너무 가혹하다.

물론 앞으로 스스로 원하던, 원하지 않던 
반드시 참가해야하는 이 게임이

그렇기 때문에 더더욱
소수는 사회의 박수를 받는 승리자가
다수는 사회의 모멸감을 받을 수 없는 패배자가 될 수 밖에 없는
이 게임이 앞으로 얼마나 지속될지는 모르겠지만 말이다.

사회의 대부분의 리소스가 
여기에 투자되고 주목 받고 있으며
유지하기 위해 안간힘을 다하는 것이 안타까울 따름이다.

그 리소스를 더 중요한 곳에 
사용할 수 있음에도 불구하고 말이다.

따라서 정신적 휴식이란 
내가 과거 게임을 하면서 성취라는 
불안감을 해소했던 것처럼 
스스로 가지고 있는 어떠한 
정신적 불안감을 해소하는 것이라 말 할 수 있을 것 이다.

그리고 이 정신적 불안감은 
어떤 사회인지, 어떤 환경에 놓여있는지
그리고 개인의 성향과 적성 등 여러가지 상황에 따라 다를 것 이다.

몇 가지 더 생각해볼만 한 점은
이런 정신적 휴식을 충분히 취하지 못할 경우 

충분한 정신적 휴식 방법을 
가지고 있음에도 불구하고 
현실에서 받고 있는 스트레스가 더 높을 경우 
지속적인 정신적 불안감이 가산되어지며 

개인이 감당할 수 있는 한계치를 넘어섰을 때 
의학적으로 말하는 
우울병으로 발전하게 될 가능성이 있으니
충분한 정신적 휴식은 인생 전반적으로 
꽤나 중요한 부분을 차지한다고 볼 수 있다.

따라서 스스로 정신적 휴식을 올바르게 
그리고 충분하게 취하고 있는지 생각해볼 필요가 있다.

다만, 인생이 늘 그렇듯이 불공평하게도
자신이 하고 있는 일 그 자체가 
어느 정도 이 정신적 휴식에 해당하는 사람이 있어
충분한 정신적 휴식을 취하지 않고도 
생활과 일의 밸런스가 맞춰지는 사람이 존재하긴 하다.

물론 이 경우 육체적 휴식이 동반되지 않는다면
무너지는 것은 동일하지만 말이다.

정신적 휴식의 전제조건


지금까지 해서 휴식에 대한 분류와 분류 중에서
정신적 휴식에 대해 집중적으로 이야기를 나누어보았다.

다만, 이런 정신적 휴식에 전제 조건이 존재한다.

위에서도 조금 언급했지만
반드시 어느 정도 지속 가능해야만 하며
해소되는 양 또한 적절해야 한다.

예컨데, 
이어서 나의 이야기를 조금 해보자면
과거 학생 시절에는 성취와 그리고 취직이라고 쓰고 
미래라고 불리우는 것에 대한 불안감이 있었기에

이 불안감을 해소하기 위해 게임에 더더욱 빠져들었다.

다만, 대학 시절 나는 
나에게 테스트에 대한 적성이 없다고 판단하고
테스트에 쏟는 시간을 대부분 과감하게 낮추고
내가 적성에 맞고 하고 싶은 일을 찾는데 사용하였다.

결국 시간이 지나고 
나는 적성에 맞는 일을 결국에 찾아내었고
그 안에서 다소 만족스러운 취직과 성취감 
이 두 가지를 모두 얻어낼 수 있었다.

이 후 게임의 시간은 점점 줄어들게 되었고
자연스럽게 다른 새로운 성취감을 찾기 위해 
이것 저것 해보게 되었다.

이 블로그 또한 이러한 이유에서 시작되어진 것 이다.

지금 나에게는 더 이상 그때와 같은 
성취에 대한 불안감은 존재하지 않는다.

본질적으로 그때 좋은 점수를 받아야만하는 이유는
취직을 하기 위함이다.

물론 비열한 어른들은 미래를 위함이라며 
거창한 이야기 떠들어대지만 말이다.

취직은 내가 미래로 가기 위한 
과정에 불과하며
역으로 취직하는 것이 미래를 위함이라고 하면 
그 사람의 미래는 어두컴컴할 수 밖에 없다.

인생 전체로 본다면 취직은 인생의 골이 될 수 없다.

정말로 그렇게 말하는 사람이 있다면 
그것보다 우스운 것이 있을까?

그렇게 생각하는 사람이 있다고 하더라도
그리고 이 세상에서 가장 좋은 직장에 취직하더라도
취직은 인생 전체로 놓고 보자면 
유년기에 일부분에 불과하기에 
지속가능한 동력을 유지하기에는 벅찰 것이다.

왜냐하면 인생의 골을 취직으로 정했기에 
이를 달성한 순간 모든 동력이 힘을 잃어버리기 때문이다.

빠르게 찾지 못한다면
흔히 말하는 번아웃이 날 것이다.

결과적으로 나는
운이 좋게도 내가 좋아하는 일을 하고 있고
좋은 사람들과 일하고 있으며
어느 정도 만족할 만한 보수를 받고 있다.

지금 있는 불안감이라고 한다면 
더 많은 배움과 탐구에 대한 불안감 밖에 없으며  
이 또한 책을 읽거나 블로그에 자유롭게 글을 작성하거나
기술을 탐구하면서 해소 하고 있기 때문에

지금 나에게 게임은 
더 이상 성취만을 갈구하는 곳은 아니게 되었다.

이를 이야기하듯이 나는 과거보다 
게임에 그렇게 많은 시간을 할애하지 않는다.

따라서 어떤 것이 정신적 휴식 인가에 대해서는
또는 전제 조건은 어느정도 지속가능한가 
그리고 충분하게 해소 될 수 있는가에 있다고 볼 수 있다.

즉, 만약 어떤 불안감이 어떤 이유에서든 
사라지게 되었다면 지속가능하지 않게 될 것이며

불안감이 있다고 하더라도 
과거에 비해 상대적으로 적어지게 된다면

행동에 대한 의미가 희석되고 점점 사라지게 될 것이다.

내가 게임을 하는 의미가 희석되듯이 
어떤 불안감이 사라지거나 적어지게 된다면 
행동에 대한 의미도 희석되어질 것 이다.

그리고 불안감이 완벽히 사라지는 순간
그 행동이 소멸될 것 이다.

결국 문제는 우리가 활용할 수 있는 시간이 그리 많지 않다는 것에 있다

하지만, 결국 문제는 
우리가 활용할 수 있는 시간이 그리 많지 않다는 것이다.

따라서 효율적인 정신적 휴식 방법을 찾는 것도 
찾더라도 이를 행할 시간도 
상황에 따라 없을 지도 모른다.

물론 후자의 경우 휴식 시간이 
어느 정도 보장되어 있는 현대 사회에서는 
그다지 어렵지 않을지는 모르겠으나

전자의 경우는 그렇지 않다.

왜냐하면 많은 시행착오가 필요한 부분이고
앞서 언급했던 바와 같이 
찾았다고 한들 영원한 것도 아니기 때문이다.

해소가 충분하지 않다면 
그 만큼 시간을 쏟아 부어야 하며
유의미하게 활용할 수 있는 시간 또한
그 만큼 줄어들게 될 것이다.

만약 시대도 사회도 환경에도 변함 없이 
충분한 불안감을 해소해줄 수 있는 행동을 
단 한번에 찾아낸다면 더할 나위가 없겠지만

인생이 늘 그렇듯이 
우리가 컨트롤 할 수 없는 부분이 늘 있기 마련이다.

만약 한 번에 찾아 냈다면 
매우 운이 좋은 것이므로 
이를 남들에게 뽐내며 
자신의 비열한 면을 만족시키려 하기 보다는

정말 감사의 마음이 존재하건 그러지 못하던
그러한 기회를 준 사람에게 감사하는 것이 좋다.

대게 이러한 기회는 스스로 만들었기보다는
누군가의 도움에 의해 나타나기 때문이다.

전자의 행동을 하게 된다면
좋게 말하면 시기와 질투를 받을 것이며
나쁘게 말하면 다수의 사람에게 적대감을 심어 줄 수 있다.

후자의 행동을 하게 된다면 
당신은 타인들로 부터 시기와 질투를 받지 않아
리스크로 부터 자유로울 수 있으며 

도움을 준 사람은 기뻐하며 
더더욱 당신 도우려 할 것이기 때문이다.

뽐내는 것은 내적으로 
스스로의 비열한 만족감을 충족시키는 것에는 비할 나위가 없지만,
외적으로는 
이보다 큰 리스크를 가져다 주는것 또한 없을 것이다.


결론

휴식이란 무엇일까?

휴식에 대한 정의는 여러가지가 존재할 수 있으나
핵심적인 열쇠는 해소(Relaxing)에 있다고 볼 수 있다.

해소는 육체적 휴식과 정신적 휴식으로 
간단하게 분류해볼 수 있으며,

현대에 들어와서 정해진 근무시간과 
주말이라는 짧다면 짧다고 볼 수 있는 기간이 존재하기 때문에 
일반적으로 육체적 휴식에 대해서는 
특별하게 고려할 필요는 없으며 의미 또한 크지는 않을 것이다.

고려해야 볼만한 부분은 정신적 휴식에 대해서이며
이 정신적 휴식에 대한 정의는 
스스로 가지고 있는 어떠한 정신적 혹은 정서적 불안감을 
해소하는 것이라 말 할 수 있을 것 이다.

다만, 전제조건이 존재하는데 
반드시 어느 정도 지속 가능해야한다는 점
그리고 충분히 불안감을 해소 해줄 수 있어야 한다는 점이다.

충분한 불안감을 해소할 수 없다면
반복해서 해야 하기 때문에 
그 만큼 인생의 유효 시간이 더더욱 줄어들게 될 것 이다.

또한 어떤 불안감이 더 이상 존재하지 않는다면 
혹은 대부분 해소되어서 과거에 비해 
상대적으로 일부분만이 남아 있더라면 
같은 행동을 한다하더라도 큰 의미가 없을 것이다.

불안감이 말끔히 해소되었기 때문이다.

물론 사람의 인생은 고통의 연속이기 때문에
새로운 불안감이 나타나겠지만 말이다.

다만, 늘 그렇듯이 
우리가 의미 있게 활용할 수 있는 시간은
그리 많지 않기 때문에
충분히 불안감을 해소해줄 만한 정신적 휴식 방법을 
찾기란 그리 쉽지 않을지도 모르겠다.

이 점에 있어서는 스스로의 판단과 행동이 중요할 것 이다.



참고 

이 블로그의 인기 게시물

[ Web ] 웹 애플리케이션 아키텍처 (Web Application Architecture)

[ Web ] 서버 사이드(Sever Side) ? 클라이언트 사이드(Client Side)? 1 [서론, 클라이언트 사이드(Client Side)]

[ Web ] 웹 애플리케이션 서버 아키텍처의 정의 및 유형 ( Define and Types of Web Application Server Architecture )