Настройка SSO-аутентификации с использованием Kerberos в SAP

Рассматриваемая конфигурация:

SAP ERP (Windows 2k8 + Oracle 11) / SAP GUI (Windows 7,8 32/64 bit)

 

1. Скачиваем из ноты 352295 файлы win64sso.zip и win32sso.zip.

2. В архиве win64sso.zip содержатся 64-битные библиотеки для активации SNC на стороне сервера, в win32sso.zip - на стороне клиента SAP GUI (sap gui исключительно 32 битный, даже если работает в Windows 7,8 64 bit)

3. Выполняем команду на контроллере домена или сервере SAP c правами администратора домена SETSPN -A SAPService<SID>/<sap-hostname>  <domain>\SAPService<SID>, где <SID> ваш SAP SID, <domain> - имя вашего домена, <sap-hostname> - имя сервера  SAP.

4. Извлечь из архива win64sso.zip библиотеку gx64krb5.dll и скопировать ее в C:\Windows\System32\ сервера SAP

5. Создать переменную окружения на сервере SAP SNC_LIB=C:\Windows\System32\gx64krb5.dll

6. В транзакции SU01 у пользователя прописать SNC-имя в формате: p:DOMAINUSER@DOMAIN.LOCAL

6. Добавить настройки профиля инстанции:

snc/enable =1
snc/accept_insecure_cpic =1
snc/accept_insecure_gui =1
snc/accept_insecure_r3int_rfc =1
snc/accept_insecure_rfc =1
snc/data_protection/max =3
snc/data_protection/min =1
snc/data_protection/use =3
# Location of the dll used for kerberos
snc/gssapi_lib = C:\Windows\System32\gx64krb5.dll
snc/permit_insecure_start =1
# The Windows User Account used to run SAP Server
snc/identity/as = p:SAPService<SID>@<YOUR DOMAIN.LOCAL>
snc/r3int_rfc_secure = 0

 

8. Перезапустите инстанцию. Если что-то не завелось - смотрите лог любого рабочего процесса (\usr\sap\<SID>\DVEBMGS00\work\dev_w0)

9. Настройки SAP GUI

9.1 Переименуйте библиотеку gsskrb5.dll из ахрива win32sso.zip в sncgss32.dll и поместите ее в c:\windows\system32 (для 32-битных OS) или в c:\windows\SYSWOW64 (для 64-битных OS)

9.2Если SAP GUI не нашел библиотеку прописать переменную окружения SNC_LIB=C:\Windows\System32\sncgss32.dll и проверить в том ли она месте (system32 или syswow64)

9.3 В свойствах подключения GUI активировать SNC и ввести строку p:SAPService<SID>@<DOMAIN.LOCAL>

10. Теперь при входе в систему пароль спрашиваться не будет, вместо этого внизу вы увидите уведомление вида: SNC logon by <MNDT> username for DOMAINUSER@DOMAIN.LOCAL.

 

Замечания:

Имена в SNC регистрочувствителные, следовательно, вам нужно узнать как именно был заведен пользователь в Active Directory, с заглавными или маленькими буквами.

Для удобства внедрения можно создать инсталлер (InstallShield), или скопировать файлик sncgss32.dll, saplogon.ini  и sapshortcut.ini через групповую политику Active Directory. Проверенно, это работает.

Переименование библиотеки нужно для SAP GUI, он ищет sncgss32.dll. Это можно исправить определив переменную окружения SNC_LIB.

Если нужен доступ по SSO в разные мандаты одной системы удобно создавать в SAP GUI ярлыки, прописав там хост, мандант и suser вы будете попадать в нужную систему (можно прописать и любимую транзакцию). Если suser не прописать - SAP будет спрашивать в какой мандант заходить. Если в одном манданте для пользователя активирован SSO, то ярлык, ведущий в другой мандант будет логиниться в текущий мандант. Это исправляется или прописыванием SNC в каждом из мандантов. Если нужно войти без SSO - в SAP GUI 7.30 нажать shift+enter на системе, или правой кнопкой мыши - вход без SSO. На старых версиях - нужно будет отключить SNC в настройках.

Есть альтернатива, SSO 2.0, но она платная, просто так ее не найти и не скачать.

 

Полезные материалы:

http://www.saptechies.org/create-ssosingle-sign-sap-sysetm/ (спасибо, ZeUsM)

http://service.sap.com/sap/support/notes/595341

https://scn.sap.com/thread/2004205

 

Запрос выводит пользователей, у которых не присвоено каноническое имя:

with x as (
select
a.BNAME,
u.PNAME
from
SAPSR3.USR02 a
left join SAPSR3.USRACL u on U.BNAME=A.BNAME
where a.mandt=<MANDT>)
select * from x where pname is null;

 

Нашел англоязычный вариант настройки:

К сожалению, в новой версии этой ноты нет возможности скачать эти библиотеки (

SNC Connection with SSO
Single Sign-On with encryption of network connections is enabled with SNC over the SNC Adapter and is using the authentication protocol Kerberos v5These prerequisites are needed to setup the SSO environment:

  • An Active Directory is required in your landscape
  • The SAP System accounts (SAPServiceSID and sbiadm) must be created and running under the AD Domain.
  • On the Domaincontroller of the SAP System run SETSPN -A SAPServiceSID/hostname.SERVER.MYDOMAIN MYDOMAIN\SAPServiceSID
  • Download the win32sso.zip or win64sso.zip (OSS Note 352295) according to the platform where the SAP System is installed.
    Unzip it and place the kerberos file on %SYSTEMROOT%\System32 (e.g. on x64 the file should be gx64krb5.dll).
  • Download SAPSSO.MSI (OSS Note 595341) for the client computers

Setting up your SAP System Server

Create a system environment called "SNC_LIB". The value depends on the OS you are having.
In a 64-Bit environment for example you have to point to the 64-Bit library.
"C:\Windows\System32\gx64krb5.dll".  (Win 32-Bit system gsskrb5.dll)

Set the following parameters on your instance profile (TX RZ10 -> Instance profile -> Extended maintenance add):

snc/enable = 1
snc/gssapi_lib = C:\Windows\System32\gx64krb5.dll   (Win 32-Bit system gsskrb5.dll)
snc/identity/as = p:SAPServiceSID@SERVER.MYDOMAIN.COM

snc/accept_insecure_cpic = 1
snc/accept_insecure_rfc = 1
snc/permit_insecure_start = 1

Setting up Clients with SSO

Install SAPSSO.MSI on the client computers. The variable SNC_LIB on these computers are created. You can check this in the environment variables.
In the Connection Properties of the related SAP GUI connection check the Option "Enable SNC" and enter the following: "p:SAPServiceSID@SERVER.DOMAIN.COM".

Setting up the Users in SAP

In the TX SU01 edit the user, select SNC tab, and provide the following information:
"p:domainuser@DOMAIN.COM".
You will also find more detail information about the needed DLLs, C++ runtimes for 32-/64-bit systems on the website:

http://msdn.microsoft.com/en-us/library/cc185322%28v=bts.10%29.aspx.

 

This entry was posted in SAP.