Drupal SAML Single Sign On usando SimpleSAMLphp como provedor de identidade
Visão geral
A integração Drupal SAML usando o Módulo miniOrange SAML SP Estabelece SSO integrado entre o SimpleSAMLphp e o site Drupal. Os usuários poderão efetuar login no site Drupal usando suas credenciais SimpleSAMLphp. Este documento o guiará pelas etapas de configuração do Single Sign-On (SSO) entre o Drupal como Provedor de Serviços (SP) e o SimpleSAMLphp como Provedor de Identidade (IdP). O módulo é compatível com Drupal 7, Drupal 8, Drupal 9, Drupal 10 e Drupal 11.
Passos da instalação
- Usando o Composer
- Usando Drush
- Instalação manual
Etapas de configuração
Metadados Drupal SAML SP
- Acesse Configuração → Personalidades → Configuração de login SAML no Administração menu. (/admin/config/people/miniorange_saml/idp_setup)
- Na guia Metadados do Provedor de Serviço, copie o ID da Entidade SP/Emissor e URL do SP ACS e mantenha-os à mão. Esses metadados do SP são necessários para configurar o SimpleSAMLphp como Provedor de Identidade (IdP).
Configurar SimpleSAMLphp como um provedor de identidade
-
No diretório de instalação do SimpleSAML, abra config/config.php e edite o seguinte:
'enable.saml20-idp' ⇒ verdadeiro
- permitir que o Autenticação UserPass módulo (incluído em exampleauth). Isso é feito criando um arquivo chamado permitir (nome do arquivo) em módulos/exampleauth/.
-
Crie uma fonte de autenticação em config/authsources.php. O arquivo deve conter uma única entrada, veja abaixo:
'__DEFAULT__', /* * A chave privada e o certificado a serem usados ao assinar respostas. * Eles são armazenados no diretório cert. */ 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', /* * A fonte de autenticação que deve ser usada para autenticar o * usuário. Isso deve corresponder a uma das entradas em config/authsources.php. */ 'auth' => '' Exemplo:- 'example-userpass', // Você pode encontrar isso na Etapa Número 1 ];
Esta configuração cria dois usuários — aluno e funcionário — com as senhas studentpass e employeepass. O nome de usuário e a senha são armazenados no índice do array (student:studentpass para o usuário-aluno). Os atributos de cada usuário são configurados no array referenciado pelo índice. Portanto, para o usuário aluno, são:
[ 'uid' => ['aluno'], 'eduPersonAffiliation' => ['membro', 'aluno'], ],
Os atributos serão retornados pelo IdP quando o usuário fizer logon.
- Gere um certificado autoassinado usando um dos seguintes métodos:
-
Usando o comando openssl
openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out example.org.crt -keyout example.org.pem
-
Gere-o usando qualquer ferramenta online e adicione-o no diretório cert.
A extensão deve ser comoexample.org.crt //(Chave Pública)example.org.pem //(Chave Privada)
-
Observação: O SimpleSAMLphp só funciona com certificados RSA. Certificados DSA não são suportados.
-
O IdP SAML 2.0 é configurado pelos metadados armazenados em metadados/saml20-idp-hospedado.php. Esta é uma configuração mínima:
'__DEFAULT__', /* * A chave privada e o certificado a serem usados ao assinar respostas. * Eles são armazenados no diretório cert. */ 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', /* * A fonte de autenticação que deve ser usada para autenticar o * usuário. Isso deve corresponder a uma das entradas em config/authsources.php. */ ' auth' => '' Exemplo:- 'example-userpass', // Você pode encontrar isso na Etapa Número 1 ];
-
O provedor de identidade que você está configurando precisa saber sobre os provedores de serviço aos quais você se conectará. Isso é configurado pelos metadados armazenados em metadata/saml20-sp-remote.php. Este é um exemplo mínimo de um arquivo de metadados metadata/saml20-sp-remote.php para um SP SimpleSAMLphp: (Substitua example.com com seu Nome de domínio Drupal.)
'https://example.com/samlassertion', 'SingleLogoutService' => 'https://example.com/user/logout', 'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', 'simplesaml.nameidattribute' => 'mail', 'simplesaml.attributes' => true, 'attributes' => array('mail', 'givenname', 'sn', 'memberOf'), ];
Observação: O fato de o URI no ID da Entidade e os URLs para os endpoints do AssertionConsumerService e do Single Logout Service variarem entre diferentes provedores de serviço é um problema. Se você tiver os metadados do SP remoto em um arquivo XML, poderá usar o conversor de XML para metadados do SimpleSAMLphp integrado, que por padrão está disponível como /admin/metadata-converter.php na sua instalação do SimpleSAMLphp.
- Vá para a página inicial de instalação do SimpleSAMLphp. (O URL de uma instalação pode ser, por exemplo https://service.example.com/simplesaml/ onde service.example.com deve ser substituído pelo seu caminho SimpleSAMLphp.)
- Navegue até a aba Federação e clique em Mostrar metadados(Esses metadados do IdP serão necessários para configurar o Drupal como SP.)
Configurar o Drupal como Provedor de Serviços SAML:
- Acesse o seu site Drupal. Navegue até o Configuração do provedor de serviços aba do módulo e clique em Carregar metadados do IDP.
- Carregue o arquivo de metadados baixado anteriormente do SimpleSAML para o Carregar arquivo de metadados campo de texto e clique em Enviar arquivo botão.
Observação: Para atualizar o Nome do Provedor de Identidade, siga estas etapas:
- Debaixo Ação, Selecione o Editar.
- Digite SimpleSAMLphp no Nome do Provedor de Identidade campo de texto.
- Role para baixo e clique no Salvar configuração botão.
- Clique no link Testar para testar a conexão entre Drupal e SimpleSAMLphp.
- Na janela pop-up de Configuração de Teste, faça login usando as credenciais do SimpleSAMLphp (caso não haja uma sessão ativa). Após a autenticação bem-sucedida, será exibida uma lista dos atributos recebidos do SimpleSAMLphp. Clique em Pronto .
Parabéns! Você configurou com sucesso o SimpleSAMLphp como Provedor de Identidade SAML (IdP) e o Drupal como Provedor de Serviços SAML.
Como funciona o login SSO SAML?
- Abra um novo navegador/janela privada e navegue até a página de login do site Drupal.
- Clique na Login usando o Provedor de Identidade (SimpleSAMLphp) link.
- Você será redirecionado para a página de login do SimpleSAMLphp. Insira as credenciais do SimpleSAMLphp. Após a autenticação bem-sucedida, o usuário será redirecionado de volta ao site do Drupal.
Obrigado pela sua resposta. Entraremos em contato em breve.
Algo deu errado. Envie sua consulta novamente.

Contato