안녕하세요.
얼마전에
https://devtalk.kakao.com/t/openid-connect-notice-support-of-openid-connect/121888
메일로 해당 링크에 대한 내용을 전달받았습니다
지금 현재 저희가 운영중인 서비스에서는 통합멤버쉽을 활용중에있는데
각 브랜드에서 카카오로그인을 시도할 시에 해당 멤버십을 통해 카카오인증 및 엑세스토큰을 발급받아 유저 정보를 전달해주어 로그인을 해주는 식으로 운영중에 있습니다.
위에 링크에 내용을 보았을때 id_token을 발급받아서 SSO인증을 구현하면 된다 하셨는데
id_token을 사용하게 될 경우 지금 현재 운영중인 방식과 보안적으로나 그외적으로 다른점이 있을지
또 id_token을 사용하게될경우 어떤식으로 구현을 하게 되야될지 알고싶습니다.
저희 운영중인 사이트 로그인로직은
브랜드사이트 로그인시도 → 통합멤버십서버에서 카카오로그인 및 인증후 유저정보 암호화 → 브랜드사이트로 리턴후 암호화된정보 복호화후 로그인
이런식으로 되어있는데 기존 통합멤버십서버에서 액세스토큰은 따로 외부에 노출될수없게 개발이 되어있습니다.
기존 사용하고 있는 방식을 계속 사용을 해도 무방할지에 대한 답변도 얻고싶습니다.
감사합니다.
안녕하세요.
답변이 늦어서 죄송합니다.
(글이 밀려서 미처 읽지 못했습니다 ㅠ)
보통 카카오 로그인 시, 사용자의 인증이 끝난뒤 구현하신 redirect uri에서 인가코드로 접근 토큰발급 받게 되십니다.
이 때, 디벨로퍼스에서 OIDC(OpenID Connect)을 활성화 하면 id_token이 추가로 응답되는데 이 값으로 SSO와 같은 통합인증처리에 응용하실수 있습니다.
사용자는 이 토큰(JWT)을 가지고 다른 서비스(웹)로 접근하게 되면, 해당 서비스에서는 기존 로그인 흐름을 생략하고 바로 사용자 인증에 사용할 수 있습니다.
토큰(JWT)에는 회원번호(앱유저아이디)가 포함되어 있음으로 전달된 토큰의 유효성만 검증되면 회원을 식별하고 인증까지 마치실 수 있습니다.
위에 설명해 주신 운영 사이트 로직에서
유저정보를 암호화하여 브랜드 사이트로 리턴하실 때, 아마 회원식별을 위한 사용자 ID값이 포함되어 있을거라 생각됩니다.
브랜드 사이트에서는 이 정보를 복호화 및 사용자 정보를 추가로 DB에서 읽어서 로그인을 마무리 하실것이라 생각됩니다.
id_token도 마찬가지로 브랜드 사이트에서는 id_token에 포함되어 있는 회원번호를 찾아 DB와 매핑하시어 저장되어 있는 회원정보를 추가로 읽어들이거나 접근토큰을 찾아 API를 호출하거나 하여 로그인 과정을 마무리 하실 수 있습니다.
혹시 추가적으로 하나 더 여쭤보고싶은데 id_token을 활용하여 SSO 로그인을 하고 같은 멤버십에 다른 사이트에서 자동으로 로그인되게끔 할경우 id_token을 쿠키에 담아서 처리해도 무방한지 알고싶습니다
안녕하세요.
id token을 쿠키에 담아서 사용하셔도 됩니다.
다만, id token은 사용자가 인증되었음을 증명하는 토큰 이기에 각각의 멤버사이트에서 인증된 사용자의 인가처리는 분리하시어 운영하시는게 좋을 것 같습니다.