Olá a todos,
Eu estava tentando atualizar automaticamente as Atribuições de Grupo se elas mudassem no lado do IDP. Infelizmente, isso só funciona se o Usuário sair e entrar novamente, pois as asserções são transmitidas apenas durante um login, pelo que entendi.
Objetivo:
O que eu gostaria de alcançar é que o Discourse (ou o plugin discourse-saml) considere a Opção “Assertion Lifespan” (Tempo de Vida da Asserção) e reavalie as asserções conforme necessário/configurado pelo IDP.
Configuração:
Minha configuração é a seguinte e está funcionando no momento.
Estou usando o Keycloak como IDP, que está conectado ao LDAP, de onde ele obtém as atribuições de Grupo.
O Discourse está em execução com as seguintes Configurações
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
Já tentei
Eu já tentei alterar os Grupos e fazer o logout e login do usuário novamente. Isso funciona manualmente com o resultado desejado.
No entanto, ativar a Opção “Assertion Lifespan” no Keycloak (veja abaixo) não parece alterar a atribuição de Grupo do Usuário após o grupo ter sido adicionado/removido para o Usuário no Keycloak/Ldap.
Repeti isso algumas vezes e esperei meia hora cada vez que alterei a atribuição de Grupo no usuário.
A única vez que a nova alteração de Grupo foi aplicada foi quando o Usuário realmente fez logout e login novamente.
Conjectura:
Eu presumo que o Plugin discourse-saml (GitHub - discourse/discourse-saml: Support for SAML in Discourse) não verifica novamente a asserção após o login do Usuário.
Seria possível implementar essa funcionalidade para o Plugin SAML?
Muito obrigado
Bao Le
