안녕하세요,
IDP 측에서 그룹 할당이 변경될 때 이를 자동으로 업데이트하려고 시도했습니다. 불행히도, 제 이해로는 assertion이 로그인 시에만 전송되므로 사용자가 로그아웃한 후 다시 로그인할 때만 작동합니다.
목표:
달성하고자 하는 것은 Discourse(또는 discourse-saml 플러그인)가 “Assertion Lifespan” 옵션을 고려하여 IDP에서 설정한 대로 필요할 때 assertion을 재평가하는 것입니다.
설정:
현재 제 설정은 다음과 같으며 정상적으로 작동하고 있습니다.
IDP로는 Keycloak를 사용 중이며, 이는 LDAP에 연결되어 그룹 할당을 가져옵니다.
Discourse는 다음 설정으로 실행 중입니다.
DISCOURSE_SAML_TARGET_URL: https://auth.example.com/realms/example/protocol/saml
DISCOURSE_SAML_SYNC_GROUPS: true
DISCOURSE_SAML_GROUPS_FULLSYNC: true
DISCOURSE_SAML_GROUPS_LDAP_LEAFCN: true
이미 시도해 본 것
이미 그룹을 변경하고 사용자를 로그아웃한 후 다시 로그인해 보았습니다. 이는 원하는 결과를 수동으로 얻을 수 있습니다.
그러나 Keycloak에서 “Assertion Lifespan” 옵션을 켜도(아래 참조), Keycloak/Ldap에서 사용자에게 그룹이 추가/제거된 후 사용자의 그룹 할당이 변경되지 않는 것 같습니다.
사용자의 그룹 할당을 변경할 때마다 여러 번 반복하고 매번 30분 정도 기다렸습니다.
새로운 그룹 변경이 적용된 유일한 경우는 사용자가 실제로 로그오프하고 다시 로그인했을 때였습니다.
추측:
discourse-saml 플러그인(GitHub - discourse/discourse-saml: Support for SAML in Discourse · GitHub)이 사용자가 로그인한 후 assertion을 다시 확인하지 않는다고 추측합니다.
saml 플러그인에 이 기능을 구현하는 것이 가능할까요?
많은 도움 부탁드립니다.
Bao Le
