OAuth에 대하여 알아보던 중 Authorization Code에 대한 설명들이 전혀 이해가 안됐다. 그래서 나는 이게 왜 필요할까, 다른 방법으로는 안될까 생각했다.
Authorization Code를 사용하는 대신 Resource Server은 user이 로그인을 한 즉시 access token을 client (backend)로 보낼 수 있을 것이다.
그렇다면 보내기 위해서 Register할 때에 내 백엔드에 있는 엔드포인트 하나를 저장시켜 resource server이 거기로 access token을 헤더에 넣어 보내면 될 것이다.
그럼 이 access token이 진짜 Resource server에서 온 것임을 어떻게 알지? 또 어떤 user를 위한 access token임을 어떻게 알지?
어떤 user를 위한 access token인지 알기 위해서는 resource server (authorization server)이 나의 backend에 저장된 User의 식별자와 같은 정보의 어떠한 식별자를 가지고 있어야한다. 하지만 그렇지 않다.
Authorization code는 결국 Authorization server에서 누구를 위한 access token을 만들거나 찾아야 하는지 알려주는 역할을 한다. 로그인을 한 순간 Authorization Server는 그 user에 관한 식별자인 Authorization code를 만든다. 그렇게 하여 backend가 그 user에 관한 access token을 요청할때에 Authorization code를 이용해 누굴 위한 access token을 요청하고 있는지 Authorization server한테 알려준다.