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:

X509 - 01.jpg

A “Certificate List” está vazia.

Utiliza-se o botão “Import Certificate” da seção “Certificate” para carregar o certificado da AC:

X509 - 02.jpg

Uma vez carregado o certificado, basta clicar no botão “Add to Certificate List”:

X509 - 03.jpg

Basta salvar o PSE e, caso o release do WAS ABAP seja menor que 7.02, reiniciar o processo do ICM:

X509 - 04.jpg

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:

X509 - 05.jpg

O parâmetro icm/HTTPS/verify_client deve ter valor 1:

X509 - 06.jpg


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:

X509 - 07.jpg

Utiliza-se o botão “Maintain” para efetuar o mapeamento. Como “External ID type” utiliza-se o valor “DN”:

X509 - 08.jpg

A primeira visão que se tem é a lista existente de entradas:

X509 - 09.jpg

Para inserir um novo certificado cliente e usuário, utiliza-se o botão “New Entries”.

X509 - 10.jpg

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:

 
X509 - 11.jpg

Basta salvar a entrada e verificar os dados gerados:

X509 - 12.jpg

Terceiro passo: Testar a Solução!

Utiliza-se do “logon trace” da nota SAP número 495911 (apenas o item da transação SM50):

X509 - 13.jpg

Menu “Administration”, items “Trace” e “Active Components”:

X509 - 14.jpg

O “Trace level” sugerido é 2, com “WpType” = DIA. Apenas o item “Security” deve estar marcado:

X509 - 15.jpg 

Faz-se necessário verificar se o certificado cliente X.509 está instalado no IE:

X509 - 16.jpg

Agora acessa-se uma URL do WAS ABAP via HTTPS, onde não espera-se por autenticação baseada em usuário e senha:

X509 - 17.jpg

O resultado no IE é:

X509 - 18.jpg

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

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply