Udostępnij za pośrednictwem


Używanie logowania jednokrotnego protokołu Kerberos na potrzeby logowania jednokrotnego do oprogramowania SAP BW przy użyciu biblioteki CommonCryptoLib (sapcrypto.dll)

W tym artykule opisano sposób konfigurowania źródła danych sap BW w celu włączenia logowania jednokrotnego z usługa Power BI przy użyciu biblioteki CommonCryptoLib (sapcrypto.dll).

Uwaga

Przed podjęciem próby odświeżenia raportu opartego na protokole SAP BW korzystającego z logowania jednokrotnego protokołu Kerberos wykonaj oba kroki opisane w tym artykule i kroki opisane w artykule Konfigurowanie logowania jednokrotnego protokołu Kerberos. Używanie biblioteki CommonCryptoLib jako biblioteki SNC umożliwia nawiązywanie połączeń logowania jednokrotnego zarówno z serwerami aplikacji SAP BW, jak i serwerami komunikatów SAP BW.

Uwaga

Konfigurowanie obu bibliotek (sapcrypto i gx64krb5) na tym samym serwerze bramy jest nieobsługiwanym scenariuszem. Nie zaleca się konfigurowania obu bibliotek na tym samym serwerze bramy, co spowoduje połączenie bibliotek. Jeśli chcesz użyć obu bibliotek, należy w pełni oddzielić serwer bramy. Na przykład skonfiguruj gx64krb5 dla serwera A, a następnie sapcrypto dla serwera B. Należy pamiętać, że wszelkie błędy na serwerze A używające biblioteki gx64krb5 nie są obsługiwane, ponieważ gx64krb5 nie jest już obsługiwana przez oprogramowanie SAP i firmę Microsoft.

Konfigurowanie programu SAP BW w celu włączenia logowania jednokrotnego przy użyciu biblioteki CommonCryptoLib

Uwaga

Lokalna brama danych jest oprogramowaniem 64-bitowym i dlatego wymaga 64-bitowej wersji biblioteki CommonCryptoLib (sapcrypto.dll) do wykonania logowania jednokrotnego BW. Jeśli planujesz przetestować połączenie logowania jednokrotnego z serwerem SAP BW w graficznym interfejsie użytkownika sap przed podjęciem próby nawiązania połączenia z logowaniem jednokrotnym za pośrednictwem bramy (zalecane), będziesz również potrzebować 32-bitowej wersji biblioteki CommonCryptoLib, ponieważ graficzny interfejs użytkownika sap jest oprogramowaniem 32-bitowym.

  1. Upewnij się, że serwer BW jest poprawnie skonfigurowany do logowania jednokrotnego Kerberos przy użyciu biblioteki CommonCryptoLib. Jeśli tak jest, możesz użyć logowania jednokrotnego, aby uzyskać dostęp do serwera BW (bezpośrednio lub za pośrednictwem serwera komunikatów SAP BW) za pomocą narzędzia SAP, takiego jak graficzny interfejs użytkownika SAP, który został skonfigurowany do korzystania z biblioteki CommonCryptoLib.

    Aby uzyskać więcej informacji na temat kroków konfiguracji, zobacz Sap Single Sign-On: Authenticate with Kerberos/SPNEGO (Logowanie jednokrotne SAP: uwierzytelnianie przy użyciu protokołu Kerberos/SPNEGO). Serwer BW powinien używać biblioteki CommonCryptoLib jako biblioteki SNC i mieć nazwę SNC rozpoczynającą się od CN=, na przykład CN=BW1. Aby uzyskać więcej informacji na temat wymagań dotyczących nazwy SNC (w szczególności parametru snc/identity/as), zobacz Parametry SNC dla konfiguracji protokołu Kerberos.

  2. Jeśli jeszcze tego nie zrobiono, zainstaluj wersję x64 programu SAP .NET Połączenie or na komputerze, na którym zainstalowano bramę.

    Możesz sprawdzić, czy składnik został zainstalowany, próbując nawiązać połączenie z serwerem BW w programie Power BI Desktop z komputera bramy. Jeśli nie możesz nawiązać połączenia przy użyciu implementacji 2.0, program .NET Połączenie or nie jest zainstalowany lub nie został zainstalowany w usłudze GAC.

  3. Sprawdź, czy na komputerze, na którym zainstalowano bramę, nie jest uruchomiony program Secure Login Client (SLC) dla oprogramowania SAP.

    Program SLC przechowuje w pamięci podręcznej bilety protokołu Kerberos w sposób, który może zakłócać możliwość korzystania przez bramę z protokołu Kerberos na potrzeby logowania jednokrotnego.

  4. Jeśli zainstalowano protokół SLC, odinstaluj go lub upewnij się, że kończysz pracę z klientem SAP Secure Login Client. Kliknij prawym przyciskiem myszy ikonę na pasku zadań systemowych, a następnie wybierz pozycję Wyloguj się i Zakończ przed podjęciem próby nawiązania połączenia z logowaniem jednokrotnym przy użyciu bramy.

    Protokół SLC nie jest obsługiwany do użycia na maszynach z systemem Windows Server. Aby uzyskać więcej informacji, zobacz Sap Note 2780475 (wymagany jest użytkownik s-user).

    SAP Secure Login Client

  5. Jeśli odinstalujesz usługę SLC lub wybierzesz pozycję Wyloguj się i zakończ, otwórz okno cmd i wprowadź polecenie klist purge , aby wyczyścić wszystkie buforowane bilety protokołu Kerberos przed podjęciem próby nawiązania połączenia z logowaniem jednokrotnym za pośrednictwem bramy.

  6. Pobierz 64-bitową bibliotekę CommonCryptoLib (sapcrypto.dll) w wersji 8.5.25 lub nowszej z programu SAP Launchpad i skopiuj ją do folderu na maszynie bramy. W tym samym katalogu, w którym skopiowano sapcrypto.dll, utwórz plik o nazwie sapcrypto.ini z następującą zawartością:

    ccl/snc/enable_kerberos_in_client_role = 1
    

    Plik .ini zawiera informacje o konfiguracji wymagane przez bibliotekę CommonCryptoLib w celu włączenia logowania jednokrotnego w scenariuszu bramy.

    Uwaga

    Te pliki muszą być przechowywane w tej samej lokalizacji; innymi słowy, /path/to/sapcrypto/ powinien zawierać zarówno sapcrypto.ini, jak i sapcrypto.dll.

    Zarówno użytkownik usługi bramy, jak i użytkownik usługi Active Directory (AD), którego użytkownik usługi personifikuje, muszą mieć uprawnienia do odczytu i wykonywania obu plików. Zalecamy przyznanie uprawnień zarówno do plików .ini, jak i .dll grupie Uwierzytelnieni użytkownicy. W celach testowych można również jawnie przyznać te uprawnienia zarówno użytkownikowi usługi bramy, jak i użytkownikowi usługi Active Directory, którego używasz do testowania. Na poniższym zrzucie ekranu przyznaliśmy grupie Uwierzytelnieni użytkownicy uprawnienia do odczytu i wykonywania dla sapcrypto.dll:

    Authenticated users

  7. Jeśli nie masz jeszcze źródła danych sap BW skojarzonego z bramą, przez którą połączenie logowania jednokrotnego ma przepływać, dodaj je na stronie Zarządzanie bramami w usługa Power BI. Jeśli masz już takie źródło danych, zmodyfikuj je:

    • Wybierz pozycję SAP Business Warehouse jako typ źródła danych, jeśli chcesz utworzyć połączenie logowania jednokrotnego z serwerem aplikacji BW.
    • Wybierz pozycję Sap Business Warehouse Message Server , jeśli chcesz utworzyć połączenie logowania jednokrotnego z serwerem komunikatów BW.
  8. W polu Biblioteka SNC wybierz zmienną środowiskową SNC_LIB lub SNC_LIB_64 albo niestandardową.

    • W przypadku wybrania SNC_LIB należy ustawić wartość zmiennej środowiskowej SNC_LIB_64 na maszynie bramy na ścieżkę bezwzględną 64-bitowej kopii sapcrypto.dll na maszynie bramy. Na przykład C:\Users\Test\Desktop\sapcrypto.dll.

    • Jeśli wybierzesz pozycję Niestandardowe, wklej ścieżkę bezwzględną do sapcrypto.dll w polu Niestandardowa ścieżka biblioteki SNC, które zostanie wyświetlone na stronie Zarządzanie bramami .

  9. W polu Nazwa partnera SNC wprowadź nazwę SNC serwera BW. W obszarze Ustawienia zaawansowane upewnij się, że zaznaczono opcję Użyj logowania jednokrotnego za pośrednictwem protokołu Kerberos dla zapytań DirectQuery. Wypełnij inne pola tak, jakby nawiązano połączenie uwierzytelniania systemu Windows z programu PBI Desktop.

  10. Utwórz zmienną środowiskową systemu CCL_PROFILE i ustaw jej wartość na ścieżkę do sapcrypto.ini.

    CCL_PROFILE system environment variable

    Pliki sapcrypto .dll i .ini muszą istnieć w tej samej lokalizacji. W powyższym przykładzie sapcrypto.ini i sapcrypto.dll znajdują się na pulpicie.

  11. Uruchom ponownie usługę bramy.

    Restart gateway service

  12. Uruchamianie raportu usługi Power BI

Rozwiązywanie problemów

Jeśli nie możesz odświeżyć raportu w usługa Power BI, możesz użyć śledzenia bramy, śledzenia CPIC i śledzenia commonCryptoLib, aby zdiagnozować problem. Ponieważ śledzenie CPIC i CommonCryptoLib to produkty SAP, firma Microsoft nie może zapewnić im pomocy technicznej.

Dzienniki bramy

  1. Odtwórz problem.

  2. Otwórz aplikację bramy i wybierz pozycję Eksportuj dzienniki na karcie Diagnostyka.

    Export gateway logs

Śledzenie CPIC

  1. Aby włączyć śledzenie CPIC, ustaw dwie zmienne środowiskowe: CPIC_TRACE i CPIC_TRACE_DIR.

    Pierwsza zmienna ustawia poziom śledzenia, a druga zmienna ustawia katalog plików śledzenia. Katalog musi być lokalizacją, do którą mogą zapisywać członkowie grupy Uwierzytelnieni użytkownicy.

  2. Ustaw CPIC_TRACE wartość 3 i CPIC_TRACE_DIR na dowolny katalog, do którego mają być zapisywane pliki śledzenia. Na przykład:

    CPIC tracing

  3. Odtwórz problem i upewnij się, że CPIC_TRACE_DIR zawiera pliki śledzenia.

    Śledzenie CPIC może diagnozować problemy wyższego poziomu, takie jak niepowodzenie ładowania biblioteki sapcrypto.dll. Na przykład poniżej znajduje się fragment kodu z pliku śledzenia CPIC, w którym wystąpił błąd ładowania .dll:

    [Thr 7228] *** ERROR => DlLoadLib()==DLENOACCESS - LoadLibrary("C:\Users\test\Desktop\sapcrypto.dll")
    Error 5 = "Access is denied." [dlnt.c       255]
    

    Jeśli wystąpi taka awaria, ale ustawiono uprawnienia do odczytu i wykonywania na sapcrypto.dll i sapcrypto.ini zgodnie z opisem w powyższej sekcji, spróbuj ustawić te same uprawnienia do odczytu i wykonywania w folderze zawierającym pliki.

    Jeśli nadal nie możesz załadować .dll, spróbuj włączyć inspekcję dla pliku. Sprawdzenie wynikowych dzienników inspekcji w systemie Windows Podgląd zdarzeń może pomóc w ustaleniu, dlaczego nie można załadować pliku. Wyszukaj wpis niepowodzenia zainicjowany przez personifikowanego użytkownika usługi Active Directory. Na przykład w przypadku personifikowanego użytkownika MYDOMAIN\mytestuser błąd w dzienniku inspekcji będzie wyglądać mniej więcej tak:

    A handle to an object was requested.
    
    Subject:
        Security ID:        MYDOMAIN\mytestuser
        Account Name:       mytestuser
        Account Domain:     MYDOMAIN
        Logon ID:           0xCF23A8
    
    Object:
        Object Server:      Security
        Object Type:        File
        Object Name:        <path information>\sapcrypto.dll
        Handle ID:          0x0
        Resource Attributes:    -
    
    Process Information:
        Process ID:     0x2b4c
        Process Name:   C:\Program Files\On-premises data gateway\Microsoft.Mashup.Container.NetFX45.exe
    
    Access Request Information:
        Transaction ID:     {00000000-0000-0000-0000-000000000000}
        Accesses:           ReadAttributes
    
    Access Reasons:     ReadAttributes: Not granted
    
    Access Mask:        0x80
    Privileges Used for Access Check:   -
    Restricted SID Count:   0
    

Śledzenie biblioteki CommonCryptoLib

  1. Włącz śledzenie CommonCryptoLib, dodając następujące wiersze do utworzonego wcześniej pliku sapcrypto.ini:

    ccl/trace/level=5
    ccl/trace/directory=<drive>:\logs\sectrace
    
  2. ccl/trace/directory Zmień opcję na lokalizację, do której członkowie grupy Uwierzytelnieni użytkownicy mogą zapisywać.

  3. Alternatywnie utwórz nowy plik .ini, aby zmienić to zachowanie. W tym samym katalogu co sapcrypto.ini i sapcrypto.dll utwórz plik o nazwie sectrace.ini z następującą zawartością. DIRECTORY Zastąp opcję lokalizacją na maszynie, do którego członkowie grupy Uwierzytelnieni użytkownicy mogą zapisywać następujące dane:

    LEVEL = 5
    DIRECTORY = <drive>:\logs\sectrace
    
  4. Odtwórz problem i sprawdź, czy lokalizacja wskazywana przez katalog zawiera pliki śledzenia.

  5. Po zakończeniu wyłącz śledzenie CPIC i CCL.

    Aby uzyskać więcej informacji na temat śledzenia biblioteki CommonCryptoLib, zobacz sap Note 2491573 (wymagany jest użytkownik sap s-user).

Personifikacja

W tej sekcji opisano rozwiązywanie problemów z objawami i krokami rozwiązywania problemów z personifikacją.

Objaw: Podczas przeglądania elementu GatewayInfo[date].log znajdujesz wpis podobny do następującego: Informacje o personifikacji użytkownika DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation)). Jeśli wartość personifikacjiLevel różni się od personifikacji, personifikacja nie odbywa się prawidłowo.

Rozwiązanie: wykonaj kroki opisane w artykule Udzielanie praw zasad lokalnych konta usługi bramy na maszynie bramy. Uruchom ponownie usługę bramy po zmianie konfiguracji.

Walidacja: odśwież lub utwórz raport i zbierz informacje o bramie [date].log. Otwórz najnowszy plik dziennika GatewayInfo i sprawdź ponownie następujący ciąg: Informacje o personifikacji użytkownika DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation: Impersonation) w celu upewnienia się, że wartość PersonifikacjaLevel jest zgodna z personifikacją.

Delegowanie

Problemy z delegowaniem zwykle pojawiają się w usługa Power BI jako błędy ogólne. Aby określić, czy delegowanie jest problemem, warto zebrać ślady wireshark i użyć protokołu Kerberos jako filtru. Aby uzyskać informacje o błędach protokołu Kerberos, zapoznaj się z wpisem w blogu. W pozostałej części tej sekcji opisano rozwiązywanie problemów z objawami i kroki rozwiązywania problemów z delegowaniem.

Objaw: W usługa Power BI może wystąpić nieoczekiwany błąd podobny do poniższego zrzutu ekranu. Wartość GatewayInfo[date].log zobaczysz ,[DM.GatewayCore] pozyskując wyjątek podczas próby wykonania zapytania Ado dla parametru clientPipelineId , a import [0D_NW_CHANN] nie pasuje do żadnych eksportów.

Screenshot of unhelpful error

W pliku Mashup[date].log zostanie wyświetlony błąd ogólny GSS-API(maj): nie podano poświadczeń.

Patrząc na ślady CPIC (sec-Microsoft.Mashup*.trc) zobaczysz coś podobnego do następującego:

[Thr 4896] *** ERROR => SncPEstablishContext() failed for target='p:CN=BW5' [sncxxall.c 3638]
[Thr 4896] *** ERROR => SncPEstablishContext()==SNCERR_GSSAPI [sncxxall.c 3604]
[Thr 4896] GSS-API(maj): No credentials were supplied
[Thr 4896] Unable to establish the security context
[Thr 4896] target="p:CN=BW5"
[Thr 4896] <<- SncProcessOutput()==SNCERR_GSSAPI
[Thr 4896]
[Thr 4896] LOCATION CPIC (TCP/IP) on local host HNCL2 with Unicode
[Thr 4896] ERROR GSS-API(maj): No credentials were supplied
[Thr 4896] Unable to establish the security context
[Thr 4896] target="p:CN=BW5"
[Thr 4896] TIME Thu Oct 15 20:49:31 2020
[Thr 4896] RELEASE 721
[Thr 4896] COMPONENT SNC (Secure Network Communication)
[Thr 4896] VERSION 6
[Thr 4896] RC -4
[Thr 4896] MODULE sncxxall.c
[Thr 4896] LINE 3604
[Thr 4896] DETAIL SncPEstablishContext
[Thr 4896] SYSTEM CALL gss_init_sec_context
[Thr 4896] COUNTER 3
[Thr 4896]
[Thr 4896] *** ERROR => STISEND:STISncOut failed 20 [r3cpic.c 9834]
[Thr 4896] STISearchConv: found conv without search

Błąd staje się jaśniejszy w sektraces z maszyny bramy sec-Microsoft.Mashup.Con-[].trc:

[2020.10.15 20:31:38.396000][4][Microsoft.Mashup.Con][Kerberos ][ 3616] AcquireCredentialsHandleA called successfully.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] InitializeSecurityContextA returned -2146893053 (0x80090303). Preparation for kerberos failed!
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Getting kerberos ticket for 'SAP/BW5' failed (user name is affonso_v@HANABQ.COM)
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 18: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 17: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 23: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 3: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.

Problem można również zobaczyć, jeśli spojrzysz na ślady WireShark.

Screenshot of tracing program showing an error

Uwaga

Inne błędy KRB5KDC_ERR_PREAUTH_REQUIRED można bezpiecznie zignorować.

Rozwiązanie: musisz dodać nazwę SPN SAP/BW5 do konta usługi. Szczegółowe informacje i kroki są dostępne w dokumentacji systemu SAP.

Może wystąpić podobny, ale nie identyczny błąd, który manifestuje się w śladach WireShark jako następujący błąd KRB5KDC_ERR_BADOPTION:

Screenshot of WireShark program showing a different error

Ten błąd wskazuje, że można odnaleźć spN SAP/BW5 , ale nie znajduje się w usługach, do których to konto może prezentować poświadczenia delegowane na karcie Delegowanie z konta usługi bramy. Aby rozwiązać ten problem, wykonaj kroki konfigurowania konta usługi bramy dla standardowego ograniczonego delegowania kerberos.

Walidacja: Właściwa konfiguracja uniemożliwi przedstawienie bramy ogólnych lub nieoczekiwanych błędów. Jeśli nadal występują błędy, sprawdź konfigurację samej bramy lub konfigurację serwera BW.

Błędy poświadczeń

W tej sekcji opisano rozwiązywanie problemów z objawami i krokami rozwiązywania problemów z błędami poświadczeń. Błędy ogólne z usługa Power BI mogą być również widoczne zgodnie z opisem we wcześniejszej sekcji delegowania.

Istnieją różne rozwiązania na podstawie objawów widocznych w źródle danych (SAP BW), więc sprawdzimy oba te rozwiązania.

Objaw 1: W sectraces sec-disp+work[].trc z serwera BW są widoczne ślady podobne do następujących:

[2020.05.26 14:21:28.668325][4][disp+work ][SAPCRYPTOLIB][435584] { gss_display_name [2020.05.26 14:21:28.668338][4][disp+work ][GSS ][435584] gss_display_name output buffer (41 bytes) [2020.05.26 14:21:28.668338][4][disp+work ][GSS ][435584] CN=DAVID@XS.CONTOSO.COM@CONTOSO.COM

Rozwiązanie: wykonaj kroki konfiguracji, aby w razie potrzeby ustawić parametry konfiguracji mapowania użytkownika na maszynie bramy. Należy wykonać te kroki, nawet jeśli masz już skonfigurowaną usługę Microsoft Entra Połączenie.

Walidacja: możesz pomyślnie załadować raport w usługa Power BI. Jeśli nie powiedzie się, zobacz kroki w objawie 2.

Objaw 2: W sectraces sec-disp+work[].trc z serwera BW są widoczne ślady podobne do następujących:

[2020.10.19 23:10:15.469000][4][disp+work.EXE ][SAPCRYPTOLIB][ 4460] { gss_display_name
[2020.10.19 23:10:15.469000][4][disp+work.EXE ][GSS ][ 4460] gss_display_name output buffer (23 bytes)
[2020.10.19 23:10:15.469000][4][disp+work.EXE ][GSS ][ 4460] CN=DAVID@CONTOSO.COM

Rozwiązanie: sprawdź, czy identyfikator zewnętrzny protokołu Kerberos dla użytkownika jest zgodny z wyświetlanymi sektracesami.

  1. Otwórz program SAP Logon.
  2. Użyj transakcji SU01.
  3. Edytuj użytkownika.
  4. Przejdź do karty SNC, sprawdź, czy nazwa SNC jest zgodna z tym, co jest wyświetlane w dziennikach.

Walidacja: po poprawnym zakończeniu będziesz mieć możliwość tworzenia i odświeżania raportów w usługa Power BI.

Aby uzyskać więcej informacji na temat lokalnej bramy danych i trybu DirectQuery, zobacz następujące zasoby: