Como configurar SSO baseado em Certificados X.509 no WAS ABAP
Decidi compartilhar alguns documentos que criei para colegas do suporte da SAP. Espero que sejam úteis. Este é o primeiro. Nos próximos dias devo publicar mais alguns.
Introdução
Existem diversas formas de SSO. A nota SAP número 1257108 fala sobre elas. A opção de usar certificados cliente X.509 como forma de SSO no Web Application Server ABAP é apresentada aqui neste documento. Um pré-requisito para utilizar essa abordagem é a existência da configuração de SSL no servidor.
Primeiro passo: cadastrar a Autoridade Certificadora (AC)
Os certificados cliente são assinados por uma AC. O WAS ABAP precisa ter uma relação de confiança com esses certificados, então cabe ao administrador do sistema importar o certificado raiz da AC na lista de certificados do PSE SSL Servidor:
A “Certificate List” está vazia.
Utiliza-se o botão “Import Certificate” da seção “Certificate” para carregar o certificado da AC:
Uma vez carregado o certificado, basta clicar no botão “Add to Certificate List”:
Basta salvar o PSE e, caso o release do WAS ABAP seja menor que 7.02, reiniciar o processo do ICM:
Nos releases 7.02 e superiores, o ICM é automaticamente notificado, como pode ser visto no log dev_icm:
“…
[Thr 2120] IcmSSLPseChanged: SSL Certificate SAPSSLS.pse was changed – refresh
[Thr 2120] Reload OK for SSL cred “C:\usr\sap\SID\DVEBMGS00\sec\SAPSSLS.pse”
…”
Resultado final na STRUST:
O parâmetro icm/HTTPS/verify_client deve ter valor 1:
Segundo passo: Mapear o Usuário
Agora resta mapear os usuários ABAP (SU01) aos respectivos certificados cliente X.509. Para isso será usada a transação SM30, utilizando a View VUSREXTID:
Utiliza-se o botão “Maintain” para efetuar o mapeamento. Como “External ID type” utiliza-se o valor “DN”:
A primeira visão que se tem é a lista existente de entradas:
Para inserir um novo certificado cliente e usuário, utiliza-se o botão “New Entries”.
Devemos informar o “External ID”, ou seja, o “Distinguished Name” (DN) do certificado cliente que o usuário ABAP estará mapeado. Os campos “Seq. No.” e “Min. date” não precisam ser preenchidos. O campo “User” deverá conter o usuário ABAP, tal qual cadastrado via transação SU01. O item “Activated” deve ser marcado:
Basta salvar a entrada e verificar os dados gerados:
Terceiro passo: Testar a Solução!
Utiliza-se do “logon trace” da nota SAP número 495911 (apenas o item da transação SM50):
Menu “Administration”, items “Trace” e “Active Components”:
O “Trace level” sugerido é 2, com “WpType” = DIA. Apenas o item “Security” deve estar marcado:
Faz-se necessário verificar se o certificado cliente X.509 está instalado no IE:
Agora acessa-se uma URL do WAS ABAP via HTTPS, onde não espera-se por autenticação baseada em usuário e senha:
O resultado no IE é:
O serviço WEBGUI (SAPGUI for HTML) foi carregado com sucesso, onde não houve a solicitação de usuário e senha (não foi apresentada uma tela para autenticação).
O resultado do “logon trace” foi:
“…
N Wed Mar 13 19:16:45 2013
N dy_signi_ext: X.509 client certificate logon with ticket request
N CertGetInfo: Subject-Name >CN=xyz, O=empresa, C=BR<
N CertGetInfo: Issuer-Name >CN=CA_empresa, O=empresa, C=BR<
N lookup USREXTID for certificate mapping information
N GetUsrExtId: search for <DN, “CN=xyz, O=empresa…”> in client nnn for user “”
N GetUsrExtId: found matching user >xyz< in client nnn
N CheckX509CertIssuer: check skipped
N GetUsrExtId: 1 matching USREXTID entries found
N iSignSncServerLogin: client/user/lang/access/auth :nnn/xyz /E/H/X
N iSignSncServerLogin: check for SSL requirement not required – done by ICman
N DyISigni: client=nnn, user=xyz , lang=E, access=H, auth=X
N usrexist: effective authentification method: X.509 client certificate
N Get_RefUser(nnn,xyz) =>
N password logon is generally enabled (default)
N productive password is still valid (expiration period=0 / days gone=0)
N password change not required (expiration period=0 / days gone=583)
N usrexist: update logon timestamp (M)
N save user time zone = >BRAZIL< into spa
N DyISignR: return code=0 (see note 320991)
…”
Observa-se que houve uma tentativa de logon baseada em certificado cliente X.509 com solicitação de ticket (para SSO baseado em “logon tickets”/cookie MYSAPSSO2).
Tanto o Subject-Name como o Issuer-Name são conhecidos. Houve o mapeamento do certificado com o usuário ABAP (graças ao segundo passo).
O método efetivo de autenticação foi o certificado cliente X.509. Como resultado final tem-se “return code=0”, ou seja, sucesso na autenticação.
Documentação relevante (em inglês):
Using X.509 Client Certificates on the AS ABAP
Nota SAP número 1257108
Nota SAP número 495911