Introdução
À medida que as organizações implementam múltiplos sistemas de software, cada um com seus próprios mecanismos de controle de acesso, manter a identidade do usuário e as informações de autenticação torna-se uma tarefa administrativa onerosa. Os usuários desses sistemas também são sobrecarregados, pois devem lembrar múltiplos nomes de usuário e senhas e autenticar-se separadamente em cada aplicação.
Para resolver esses problemas, o conceito de Single Sign On (SSO) foi concebido.
O SSO tenta definir de forma única o controle de acesso de múltiplos sistemas de software relacionados. Com o SSO, um usuário faz login com um único nome de usuário e senha e obtém acesso a múltiplos sistemas sem precisar fornecer autenticação separada para cada sistema.
SAML 2.0 como um Mecanismo para Implementação de SSO
Security Assertion Markup Language (SAML) é um padrão criado para a troca de dados de autenticação entre aplicações ou domínios de segurança. O protocolo SAML 2.0 permite que informações de usuário sejam compartilhadas entre uma autoridade compatível com SAML 2.0 e aplicações compatíveis com SAML 2.0. O SAML 2.0 é um protocolo baseado em XML e todas as trocas de dados são passadas como documentos XML padrão. O padrão SAML é mantido pela Organização para o Avanço de Padrões de Informação Estruturada (OASIS).
Tutorial útil: https://www.okta.com/integrate/documentation/saml/
Termos do SAML 2.0:
Provedor de Identidade (IdP) – Um sistema que gerencia informações de usuário e fornece serviços de autenticação para aplicações dependentes. Um provedor de identidade pode ser estabelecido usando os serviços de fornecedores como OneLogin, Okta e outros. As organizações podem, alternativamente, optar por implementar seu próprio sistema IdP privado. Um exemplo popular é o projeto Gluu Server.
Provedor de Serviço (SP) – Qualquer sistema de software usado por uma organização que depende de um IdP para controle de acesso. O produto WFMSG Community é um exemplo de aplicação SP.
Implementação de SSO via SAML 2.0 pela Comunidade
A especificação SAML 2.0 é vasta e suporta muitos métodos possíveis de autenticação de usuários. A Comunidade implementa um modelo de redirecionamento de autenticação. Quando a Comunidade detecta que um usuário precisa ser autenticado, ela redireciona o navegador do usuário para o site do IdP configurado, onde ocorre a autenticação.
O Processo de Autenticação:
1. Um usuário tenta acessar um recurso da Comunidade
2. A Comunidade detecta a necessidade de autenticar o usuário
3. A Comunidade redireciona o usuário para o endpoint do IdP configurado
4. Se o IdP não tiver autenticado previamente o usuário, ele solicita nome de usuário e senha
5. Se o login for bem-sucedido, o IdP gera um documento de autenticação XML compatível com SAML 2.0
6. O IdP envia o documento XML para o consumidor SAML 2.0 da Comunidade em https://companysite/CommunityWeb/UI/SAML/consumer.aspx
7. A Comunidade verifica a autenticidade do documento XML e lê o nome de usuário
8. A Comunidade verifica o nome de usuário internamente, configura a sessão do usuário e apresenta a página Comunidade Hoje (início)
Requisitos de Configuração do SAML 2.0
Requisito do Provedor de Identidade
Quando a aplicação Comunidade é configurada com o provedor de identidade, o endpoint do consumidor SAML dentro da Comunidade deve ser fornecido como parte da configuração. O endpoint é:
https://companysite/CommunityWeb/UI/SAML/consumer.aspx
Todas as implementações de firewall e segurança devem ser configuradas para permitir a conectividade entre o IdP e este endpoint.
Requisitos da Comunidade
Os seguintes parâmetros SAML são exigidos pela Comunidade:
• URL do endpoint do IdP
• URL do Emissor do IdP
• Nome da tag XML do ID do usuário da Comunidade
• Certificado de segurança X.509
Esses valores são gerados ou criados quando um administrador define inicialmente a Comunidade como uma aplicação de Provedor de Serviço dentro do sistema IdP. Esses valores devem ser conhecidos antes de realizar a configuração inicial da Comunidade, pois são necessários para definir o SAML como o método de autenticação.
O CommunityWFM requer que uma conta de usuário SSO seja criada para o suporte do CommunityWFM com acesso à aplicação da Comunidade.
Configuração do Okta e da Comunidade para Usar SAML
Na página do menu Aplicações do Okta (usando Interface Clássica):
1. Selecione Adicionar Aplicação
2. Selecione Criar Novo App
3. Selecione Web para Plataforma
4. Selecione SAML 2.0 para método de Login
5. Clique em Criar:
6. Configurações Gerais:
a. Digite o nome do App e clique em Próximo:
7. Configurações SAML:
a. Para ambos URL de login único e URI de Audiência (ID da Entidade SP) use:
https://MyCompany.com/CommunityWeb/UI/SAML/consumer.aspx
Nota: substitua MyCompany.com pelo nome/URL do seu servidor da Comunidade
b. Selecione EmailAddress para o formato do ID de Nome
c. Selecione Nome de usuário do Okta para o nome de usuário da Aplicação
d. Adicione Outro usando Email para o Nome, Não especificado para o formato do Nome, e user.email para o Valor e selecione Adicionar Outro
e. Clique em Próximo
8. Feedback
a. Selecione as opções que se aplicam à sua empresa e clique em Concluir
9. Configuração de Login:
a. Clique em Ver Instruções de Configuração:
b. Copie e cole os campos em um documento de texto e forneça ao gerente de projeto do CommunityWFM. A seguir, um exemplo de Instruções de Configuração.
10. Configuração do Servidor CommunityWFM
a. O engenheiro de serviços profissionais da Comunidade colará as configurações fornecidas na página Configurar Autenticação SAML em Configurações > Configurações de Aplicação > Configurações Globais & preferências
b. Existem dois tipos de SSO disponíveis em Tipo de Login Único:
i. SSO Iniciado pelo Provedor de Serviço (SP):
ii. SSO Iniciado pelo Provedor de Identidade (IdP):
Configuração de Registro SAML da Comunidade
O Community oferece aos usuários a capacidade de habilitar o registro aprimorado para solucionar falhas de SAML no link Clique aqui para opções de registro na página Configurar Autenticação SAML em Configurações > Configurações do aplicativo > Configurações globais e preferências:
Os usuários têm a opção de habilitar a duração do registro aprimorado para os próximos 5 minutos, 15 minutos ou 30 minutos. O registro será automaticamente interrompido após atingir a duração especificada:
Além disso, o usuário tem a opção de selecionar o(s) destino(s) do registro: Registrar no Log de Aplicativos do Servidor Community e/ou Registrar no Banco de Dados do Community:
A seguir, um exemplo dos logs relatados:
[/SAML/consumer.aspx] Consumidor SAML chamado em 16/11/2020 14:46:34.
[/SAML/consumer.aspx] Tentando ler a configuração SAML do Community...
[/SAML/consumer.aspx] A configuração SAML do Community foi lida com sucesso.
[/SAML/consumer.aspx] Detecção de binding HTTP POST.
[/SAML/consumer.aspx] Dados POST lidos com sucesso. (Comprimento: 6275)
[/SAML/consumer.aspx] SAMLResponse foi lido com sucesso. (Comprimento: 6208)
[/SAML/consumer.aspx] Decodificação foi bem-sucedida.
[/SAML/consumer.aspx] Criando objeto de Resposta...
[/SAML/consumer.aspx] Objeto de Resposta criado.
[/SAML/consumer.aspx] Avaliação de StatusCode...<PASS>
[/SAML/consumer.aspx] Avaliação de IssueInstant...<PASS>
[/SAML/consumer.aspx] Lendo nome de usuário do Community a partir do atributo Email...
[/SAML/consumer.aspx] Falha ao ler do Atributo Email
[/SAML/consumer.aspx] Esses Atributos foram apresentados...
Chave: 'http://schemas.microsoft.com/identity/claims/tenantid' Contém Valor: '93ca9525-cce1-42c8-8b0d-8ce24900b910'
Chave: 'http://schemas.microsoft.com/identity/claims/objectidentifier' Contém Valor: '26254ad1-37b4-43da-9a19-79f032f9b8fc'
Chave: 'http://schemas.microsoft.com/identity/claims/identityprovider' Contém Valor: 'https://sts.windows.net/36ee4888-e62d-476c-924a-a7dc71ba90fe/'
Chave: 'http://schemas.microsoft.com/claims/authnmethodsreferences' Contém Valor: 'http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password'
Chave: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name' Contém Valor: 'agentname@wfmsg.com'
Chave: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email' Contém Valor: 'agentname@wfmsg.com'
Solução de Problemas de Autenticação SAML no Community
O Log de Aplicativos do Windows Server
Quando o processo de autenticação SAML falha, o usuário é apresentado a uma página genérica de “falha de autenticação SAML” sem detalhes sobre o motivo da falha. Detalhes específicos sobre a falha podem ser encontrados no log de aplicativos do servidor Community.
Endpoint de Depuração SAML do Community
O Community também fornece um endpoint de depuração que oferece detalhes úteis ao solucionar falhas de SAML.
Para usar este recurso:
- No IdP, altere temporariamente o endpoint do consumidor do aplicativo Community para:
https://companysite/CommunityWeb/UI/SAML/test.aspx - Realize um login de usuário
- O Community exibirá uma página de depuração
A página de depuração exibe os valores exatos dos parâmetros que estavam contidos no documento XML recebido do IdP. Esses valores podem ser usados para identificar e corrigir quaisquer discrepâncias contidas na configuração SAML do Community.
Configuração de notas utilizando vários IdPs SAML
Okta
Na página do menu Aplicativos do Okta, selecione Adicionar Aplicativo | Criar Novo App. Crie uma plataforma “web”, aplicativo SAML 2.0.
Quando solicitado para a URL de Single Sign On, use:
https://ReplaceWithYourCompanySite//CommunityWeb/UI/SAML/test.aspx para testar e depois substitua pela URL do aplicativo abaixo
https://ReplaceWithYourCompanySite/CommunityWeb/UI/SAML/consumer.aspx,
use as mesmas URLs para Público-alvo como usado para Single Sign On.
Adicione um atributo em “Declarações de Atributo” com o nome de Email, o formato pode permanecer 'não especificado' e o valor deve ser user.email
O restante da configuração pode permanecer nos padrões.
Após avançar pelo assistente e completar a criação do aplicativo, você deve ser levado à “Página de Login do Aplicativo”:
Selecione “Ver Instruções de Configuração.” Isso possui os parâmetros necessários para configurar o lado da Comunidade da conexão.
O seguinte é um exemplo do que é exibido após selecionar “Ver Instruções de Configuração.”
Por favor, copie e cole cada um destes na íntegra em um documento de texto e forneça ao Gerente de Projetos da CommunityWFM.
Azure Cloud ADFS
1. Na seção de Configuração Básica SAML, dois valores que precisam ser definidos no lado do ADFS são o “Identificador (ID da Entidade)” e a “URL de Resposta (URL de Serviço de Atendimento ao Cliente de Asserção)”. Esses precisam ser definidos para
https://ReplaceWithYourCompanySite/CommunityWeb/UI/SAML/test.aspx para testar e depois substituir pela URL do aplicativo uma vez que o teste esteja completo https://ReplaceWithYourCompanySite/CommunityWeb/UI/SAML/consumer.aspx
2. Na seção de Atributos e Declarações do Usuário, selecione editar (ícone de lápis) e depois edite a “declaração” individual para o endereço de email. Diferente da imagem abaixo, o Nome da Declaração conterá todo o “Namespace”.
3. O “Namespace” precisa ser removido e o “Nome” deve ser definido para o texto mais curto “Email”.
4. Por favor, copie e cole cada um destes na íntegra em um documento de texto e forneça ao Gerente de Projetos da CommunityWFM.
a. A “URL de Login” do ADFS = “Endpoint do IdP SAML”
b. O “Identificador do Azure AD” do ADFS = “Emissor SAML”
c. O nome do Atributo do Usuário do ADFS de “Email” = “Atributo de Usuário XML SAML”
d. O Certificado ADFS (Base64) = “Certificado de Segurança