Eu tenho um requisito onde, eu tenho que substituir a autenticação do usuário padrão pela autenticação de um servidor central, ou seja, servidor SSO.
Ao depurar o Drupal, fiquei sabendo que todo o gerenciamento de sessões acontece em includes/session.inc
arquivo. Quero fazer a autenticação, como mostrado na imagem:
CENÁRIO: Login
Os detalhes das etapas seriam:
- Substitua o formulário de login para enviar o nome de usuário e a senha ao servidor SSO ( não no Drupal , mas no .NET).
- Autentique o usuário no servidor SSO usando o banco de dados desse site; e envie uma resposta de volta para alguma página PHP personalizada do meu site (ou um formulário de um módulo?).
- Usando a resposta, identifique o usuário na tabela de usuários e crie uma sessão para esse usuário sem verificar a senha (pois isso significaria autenticação dupla). Por padrão, o Drupal define um cookie com o nome da
$insecure_session_name
variável e com o valor$sid
. Quero que o Drupal não defina o cookie aqui, envie os valores das variáveis para o servidor SSO. - O servidor SSO pegará os valores, criará um cookie e o descartará no domínio principal
domain.com
(para lembrar os doismy website
esso server
está no subdomínio do domínio principal, que também não está no Drupal). Em seguida, o site drupal pode efetuar login usando esse cookie.
Eu sei que é uma pergunta difícil, só estou procurando indicações sobre como devo começar? como se costuma dizer "você não deve invadir o núcleo". Então, minhas perguntas são:
- Onde devo procurar para entender como a autenticação e o gerenciamento de sessões do Drupal funcionam em profundidade?
- Existe uma maneira de chamar as funções
includes/session.inc
usando ganchos (como os comentários com funções dizem "apenas para uso interno / não devem ser modificados")?
NOTA: Vou usar o mesmo método para registrar o usuário, para que o registro permaneça no banco de dados central do servidor SSO. E durante isso, você inserirá uma senha indesejada para o mesmo usuário no banco de dados do site Drupal (pois a senha não será verificada durante o login).