카카오 로그인에서 OpenID Connect 스펙과 다른 logout_redirect_uri에 대한 질문

안녕하세요!

openID connect 1.0의 공식 스펙과 비교할때, 의문이 있어서 글을 남깁니다.

현재 logout시 보내야할 parameter로 client_id와 logout_redirect_uri가 존재합니다. 여기서 logout_redirect_uri로 parameter이름이 정의되어있는데, post_logout_redirect_uri로 정의되는 것이 맞는것 같은데 어떻게 보시나요?

공식 스펙이랑 다를 경우에, Keycloak과 같은 인증 서버와 호환이 안되서, parameter이름 변경 혹은 추가가 필요해보입니다.

REST API | Kakao Developers REST API 를 보시면, 이에 대한 parameter 정의가 나와있고
공식 Spec인 Final: OpenID Connect RP-Initiated Logout 1.0 에서 post_logout_redirect_uri로 검색하시면 나옵니다!

감사합니다.

안녕하세요.

아쉽지만, 현재 OpenID Connect 세션관리 및 RP-Initiated Loutout 기능은 지원하고 있지 않습니다.
해당 스팩의 구현 여부는 검토해 보도록하겠습니다.
감사합니다.

@woody.ho 안녕하세요.

카카오가 OpenID Connect 기능을 제공하고 있고, 또한 Logout Redirect URI을 지원하는데도 불구하고, OpenID Connect에서 정의한 parameter 이름 규칙을 따르지 않는 것이 좀 이해하기 어렵습니다. ㅠ

기존 parameter 이름을 변경하기 어렵다면, post_logout_redirect_uri를 추가하여 동일하게 작동하도록 변경해주실 순 없을까요?

@jay.ahn

카카오 로그인 OpenID Connect 지원은 2022년 3월 19일 부터 지원 되었습니다.

이전부터 제공 되고 있는 로그아웃 기능은 OpenID Connect 스팩의 구현이 아닙니다.

때문에, 해당 스팩을 따르지 않았기 보다는 제공하고 있지 않는것으로 보시면 좋을것 같습니다.
(OIDC: 메타데이터 확인하기에서도 end_session_endpoint 를 제공하고 있지 않은점을 확인하실 수 있습니다.)

기존 로그아웃 기능은 사용자의 접근토큰이 필요하기에 파라미터를 지원하여 사용하실 수는 없을것 같습니다.
해당 스팩의 구현 여부는 검토해 보도록하겠습니다.


다른 이야기지만 해당 스팩과 관련하여 Keycloak 에서도 oidc logout uri는 옵셔널 항목으로 알고 있습니다.
이를 필수로 사용하시려는 이유가 어떻게 되실까요?

아래는 keycloak.js라는 javascript 공식 라이브러리의 코드 중 일부입니다. 아래와 같이 logout이후에 방문할 페이지를 parameter로 제공하면, post_logout_redirect_uri라는 이름으로 전달하고 있습니다. 물론 post_logout_redirect_uri는 optional이지만, 제공해야한다고 할때, 카톡의 로그인의 경우만, 따로 logout_redirect_uri로 이름을 바꿔서 제공해야하기 때문에, 다른 identity_provider와는 다르게 정의해야해서, 유지보수 문제가 존재합니다.

https://github.com/keycloak/keycloak/blob/cf386efa40034ad788c265520316a1c30dfe30da/adapters/oidc/js/src/keycloak.js#L482

	    kc.createLogoutUrl = function(options) {
	        var url = kc.endpoints.logout()
	            + '?post_logout_redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false))
	            + '&id_token_hint=' + encodeURIComponent(kc.idToken);

	        return url;
	    };

이것이 필요한 이유는, 웹에서 로그아웃시 카카오톡도 같이 세션을 만료시키고 싶습니다. 아래 문서에 나온 기능을 사용하려하는데, logout_redirect_uri를 입력하지 않으면, KOE207(필수 파라미터 누락) 에러가 발생합니다. 따라서, 저희 서비스에서 로그아웃과 동시에, 카카오에서도 로그아웃을 하기 위해서는, logout_redirect_uri가 필수적으로 보입니다.

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#logout-of-service-and-kakaoaccount


번외로, https://kauth.kakao.com/oauth/logouthttps://kauth.kakao.com/.well-known/openid-configuration에서 end_session_endpoint로 추가되어야하는게 맞지 않나요?

안녕하세요.

현재 OIDC Logout 스팩 제공과 관련하여 담당부서에 전달되었고 개발 검토중에 있습니다.
(이 부분은 기능 제공하게되면 다시 말씀드리겠습니다.)


번외와 관련하여
현재 /oauth/logout는 OIDC Logout 스팩이 정리되기 전부터 제공되던 기능으로 이를 바로 OIDC Discovery 에 포함할수 없습니다. 말씀처럼 이 URI로 해당 스팩을 지원할지 별도의 URI가 제공될지는 아직은 안내드릴 내용이 없어 추후 검토 완료 시, 안내 드리도록 하겠습니다.

1개의 좋아요

안녕하세요!

긍정적으로 검토해주셔서 감사합니다!