Eenmalige aanmelding van Kerberos gebruiken voor eenmalige aanmelding bij SAP BW met behulp van CommonCryptoLib (sapcrypto.dll)
In dit artikel wordt beschreven hoe u uw SAP BW-gegevensbron configureert om eenmalige aanmelding (SSO) vanuit de Power BI-service in te schakelen met behulp van CommonCryptoLib (sapcrypto.dll).
Notitie
Voordat u probeert een sap BW-rapport te vernieuwen dat gebruikmaakt van Kerberos SSO, moet u de stappen in dit artikel en de stappen in Eenmalige aanmelding op basis van Kerberos configureren uitvoeren. Als u CommonCryptoLib gebruikt als uw SNC-bibliotheek (Secure Network Communications), zijn SSO-verbindingen mogelijk met zowel SAP BW-toepassingsservers als SAP BW-berichtservers.
Notitie
Het configureren van beide bibliotheken (sapcrypto en gx64krb5) op dezelfde gatewayserver is een niet-ondersteund scenario. Het is niet raadzaam om beide bibliotheken op dezelfde gatewayserver te configureren, omdat dit leidt tot een combinatie van bibliotheken. Als u beide bibliotheken wilt gebruiken, moet u de gatewayserver volledig scheiden. Configureer bijvoorbeeld gx64krb5 voor server A en sapcrypto voor server B. Houd er rekening mee dat een fout op server A die gebruikmaakt van gx64krb5 niet wordt ondersteund, omdat gx64krb5 niet meer wordt ondersteund door SAP en Microsoft.
SAP BW configureren om eenmalige aanmelding in te schakelen met CommonCryptoLib
Notitie
De on-premises gegevensgateway is 64-bits software en vereist daarom de 64-bits versie van CommonCryptoLib (sapcrypto.dll) om eenmalige aanmelding van BW uit te voeren. Als u van plan bent om de SSO-verbinding met uw SAP BW-server in SAP GUI te testen voordat u een SSO-verbinding probeert uit te voeren via de gateway (aanbevolen), hebt u ook de 32-bits versie van CommonCryptoLib nodig, omdat SAP GUI 32-bits software is.
Zorg ervoor dat uw BW-server correct is geconfigureerd voor eenmalige aanmelding van Kerberos met behulp van CommonCryptoLib. Als dat het geval is, kunt u eenmalige aanmelding gebruiken om toegang te krijgen tot uw BW-server (rechtstreeks of via een SAP BW-berichtenserver) met een SAP-hulpprogramma zoals SAP GUI dat is geconfigureerd voor het gebruik van CommonCryptoLib.
Zie SAP Single Sign-On: Authenticate with Kerberos/SPNEGO(Verificatie met Kerberos/SPNEGO) voor meer informatie over de installatiestappen. Uw BW-server moet CommonCryptoLib als SNC-bibliotheek gebruiken en een SNC-naam hebben die begint met CN=, zoals CN=BW1. Zie SNC-parameters voor Kerberos-configuratie voor meer informatie over SNC-naamvereisten (met name de snc/identity/as-parameter).
Als u dit nog niet hebt gedaan, installeert u de x64-versie van de SAP .NET-connector op de computer waarop de gateway is geïnstalleerd.
U kunt controleren of het onderdeel is geïnstalleerd door vanaf de gatewaycomputer verbinding te maken met uw BW-server in Power BI Desktop. Als u geen verbinding kunt maken met behulp van de 2.0-implementatie, is de .NET-connector niet geïnstalleerd of niet geïnstalleerd in de algemene assemblycache.
Zorg ervoor dat SAP Secure Login Client (SLC) niet wordt uitgevoerd op de computer waarop de gateway is geïnstalleerd.
Via SLC worden Kerberos-tickets zodanig in de cache geplaatst dat dit invloed kan hebben op het vermogen van de gateway om Kerberos voor SSO te gebruiken.
Als SLC is geïnstalleerd, verwijdert u deze of sluit u de SAP Secure Login Client af. Klik met de rechtermuisknop op het pictogram in het systeemvak en selecteer Afmelden en afsluiten voordat u een SSO-verbinding probeert te maken met behulp van de gateway.
SLC wordt niet ondersteund voor gebruik op Windows Server-computers. Zie SAP Note 2780475 (s-user required) voor meer informatie.
Als u SLC verwijdert of afmelden en afsluiten selecteert, opent u een cmd-venster en voert
klist purge
u in om eventuele Kerberos-tickets in de cache te wissen voordat u een SSO-verbinding via de gateway probeert uit te voeren.Download 64-bits CommonCryptoLib (sapcrypto.dll) versie 8.5.25 of hoger van SAP Launchpad en kopieer deze naar een map op uw gatewaycomputer. Maak in dezelfde map waar u sapcrypto.dll hebt gekopieerd een bestand met de naam sapcrypto.ini, met de volgende inhoud:
ccl/snc/enable_kerberos_in_client_role = 1
Het bestand .ini bevat configuratiegegevens die vereist zijn voor CommonCryptoLib om eenmalige aanmelding in te schakelen in het gatewayscenario.
Notitie
Deze bestanden moeten op dezelfde locatie worden opgeslagen; met andere woorden: /path/to/sapcrypto/ moet zowel sapcrypto.ini als sapcrypto.dll bevatten.
Zowel de gatewayservicegebruiker als de Active Directory-gebruiker (AD) die door de servicegebruiker wordt geïmiteerd, hebben machtigingen voor lezen en uitvoeren nodig voor beide bestanden. U wordt aangeraden machtigingen te verlenen voor zowel de .ini- als .dll-bestanden voor de groep Geverifieerde gebruikers. Voor testdoeleinden kunt u deze machtigingen ook expliciet verlenen aan zowel de gatewayservicegebruiker als de AD-gebruiker die u gebruikt voor het testen. In de volgende schermopname hebben we de groep Geverifieerde gebruikers lees- en uitvoermachtigingen verleend voor sapcrypto.dll:
Als u nog geen SAP BW-gegevensbron hebt die is gekoppeld aan de gateway die u wilt laten doorlopen door de SSO-verbinding, voegt u er een toe op de pagina Verbindingen en gateways beheren in de Power BI-service. Als u al een dergelijke gegevensbron hebt, bewerkt u deze:
- Kies SAP Business Warehouse als gegevensbrontype als u een SSO-verbinding met een BW-toepassingsserver wilt maken.
- Selecteer Sap Business Warehouse Message Server als u een SSO-verbinding wilt maken met een BW-berichtenserver.
Selecteer voor de SNC-bibliotheek de omgevingsvariabele SNC_LIB of SNC_LIB_64 of Aangepast.
Als u SNC_LIB selecteert, moet u de waarde van de omgevingsvariabele SNC_LIB_64 op de gatewaycomputer instellen op het absolute pad van de 64-bits kopie van sapcrypto.dll op de gatewaycomputer. Bijvoorbeeld C:\Users\Test\Desktop\sapcrypto.dll.
Als u Aangepast kiest, plakt u het absolute pad naar sapcrypto.dll in het veld Aangepast SNC-bibliotheekpad dat wordt weergegeven op de pagina Gateways beheren.
Voer voor de naam van de SNC-partner de SNC-naam van de BW-server in. Controleer onder Geavanceerde instellingen of eenmalige aanmelding via Kerberos gebruiken voor DirectQuery-query's is ingeschakeld. Vul de andere velden in alsof u een Windows-verificatieverbinding tot stand hebt gebracht vanuit PBI Desktop.
Maak een CCL_PROFILE systeemomgevingsvariabele en stel de waarde ervan in op het pad naar sapcrypto.ini.
De sapcrypto-.dll- en .ini-bestanden moeten zich op dezelfde locatie bevinden. In het bovenstaande voorbeeld bevinden sapcrypto.ini en sapcrypto.dll zich beide op het bureaublad.
Start de gatewayservice opnieuw op.
Probleemoplossing
Als u het rapport niet kunt vernieuwen in de Power BI-service, kunt u gatewaytracering, CPIC-tracering en CommonCryptoLib-tracering gebruiken om het probleem vast te stellen. Omdat CPIC-tracering en CommonCryptoLib SAP-producten zijn, kan Microsoft er geen ondersteuning voor bieden.
Gatewaylogboeken
Reproduceer het probleem.
Open de gateway-app en selecteer Logboeken exporteren op het tabblad Diagnostische gegevens.
CPIC-tracering
Als u CPIC-tracering wilt inschakelen, stelt u twee omgevingsvariabelen in: CPIC_TRACE en CPIC_TRACE_DIR.
Met de eerste variabele wordt het traceringsniveau ingesteld en met de tweede variabele wordt de map met traceringsbestanden ingesteld. De map moet een locatie zijn waarnaar leden van de groep Geverifieerde gebruikers kunnen schrijven.
Stel CPIC_TRACE in op 3 en CPIC_TRACE_DIR op de map waarnaar u de traceringsbestanden wilt schrijven. Voorbeeld:
Reproduceer het probleem en zorg ervoor dat CPIC_TRACE_DIR traceringsbestanden bevat.
CPIC-tracering kan problemen op een hoger niveau vaststellen, zoals een fout bij het laden van de sapcrypto.dll-bibliotheek. Hier volgt bijvoorbeeld een fragment uit een CPIC-traceringsbestand waarin een .dll laadfout is opgetreden:
[Thr 7228] *** ERROR => DlLoadLib()==DLENOACCESS - LoadLibrary("C:\Users\test\Desktop\sapcrypto.dll") Error 5 = "Access is denied." [dlnt.c 255]
Als er een dergelijke fout optreedt, maar u de lees- en uitvoermachtigingen hebt ingesteld voor sapcrypto.dll en sapcrypto.ini zoals beschreven in de bovenstaande sectie, kunt u dezelfde lees- en uitvoermachtigingen instellen voor de map die de bestanden bevat.
Als u de .dll nog steeds niet kunt laden, schakelt u de controle voor het bestand in. Als u de resulterende auditlogboeken in de Windows-Logboeken bekijkt, kunt u mogelijk bepalen waarom het bestand niet kan worden geladen. Zoek naar een foutvermelding die is geïnitieerd door de geïmiteerde AD-gebruiker. Voor de geïmiteerde gebruiker
MYDOMAIN\mytestuser
ziet een fout in het auditlogboek er bijvoorbeeld ongeveer als volgt uit: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
CommonCryptoLib-tracering
Schakel CommonCryptoLib-tracering in door deze regels toe te voegen aan het sapcrypto.ini bestand dat u eerder hebt gemaakt:
ccl/trace/level=5 ccl/trace/directory=<drive>:\logs\sectrace
Wijzig de
ccl/trace/directory
optie in een locatie waarnaar leden van de groep Geverifieerde gebruikers kunnen schrijven.U kunt ook een nieuw .ini-bestand maken om dit gedrag te wijzigen. Maak in dezelfde map als sapcrypto.ini en sapcrypto.dll een bestand met de naam sectrace.ini met de volgende inhoud. Vervang de
DIRECTORY
optie door een locatie op uw computer waarnaar leden van de groep Geverifieerde gebruikers kunnen schrijven:LEVEL = 5 DIRECTORY = <drive>:\logs\sectrace
Reproduceer het probleem en controleer of de locatie waarnaar wordt verwezen door DIRECTORY traceringsbestanden bevat.
Wanneer u klaar bent, schakelt u CPIC- en CCL-tracering uit.
Zie SAP Note 2491573 (SAP s-user required) voor meer informatie over CommonCryptoLib-tracering.
Imitatie
In deze sectie worden de symptomen en oplossingsstappen voor imitatieproblemen beschreven.
Symptoom: Wanneer u de GatewayInfo[date].log u een vermelding vindt die vergelijkbaar is met het volgende: About to impersonate user DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation). Als de waarde voor ImpersonationLevel verschilt van imitatie, gebeurt imitatie niet goed.
Oplossing: Volg de stappen in het verlenen van lokale beleidsrechten voor het gatewayserviceaccount in het artikel over gatewaycomputers . Start de gatewayservice opnieuw op nadat u de configuratie hebt gewijzigd.
Validatie: Vernieuw of maak het rapport en verzamel de GatewayInfo[date].log. Open het meest recente gatewayinfo-logboekbestand en controleer opnieuw de tekenreeks About to impersonate user DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation) om ervoor te zorgen dat de waarde voor ImpersonationLevel overeenkomt met imitatie.
Delegering
Delegatieproblemen worden meestal weergegeven in de Power BI-service als algemene fouten. Om te bepalen of delegering het probleem is, is het handig om de Wireshark-traceringen te verzamelen en Kerberos als filter te gebruiken. Raadpleeg dit blogbericht voor kerberos-fouten. In de rest van deze sectie worden problemen met problemen met delegering beschreven en worden de stappen beschreven voor het oplossen van problemen met delegering.
Symptoom: In de Power BI-service kan er een onverwachte fout optreden die vergelijkbaar is met die in de volgende schermopname. In GatewayInfo[date].log ziet u dat [DM.GatewayCore] een uitzondering opneemt tijdens de uitvoeringspoging van de ADO-query voor clientPipelineId en dat het importeren [0D_NW_CHANN] overeenkomt met geen exports.
In de Mashup[date].log ziet u de algemene fout GSS-API(maj): er zijn geen referenties opgegeven.
Als u de CPIC-traceringen (sec-Microsoft.Mashup.trc*) bekijkt, ziet u er ongeveer als volgt uit:
[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
De fout wordt duidelijker in de sectraces van de gatewaymachine 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.
U kunt het probleem ook zien als u WireShark-traceringen bekijkt.
Notitie
De andere fouten KRB5KDC_ERR_PREAUTH_REQUIRED kunnen veilig worden genegeerd.
Oplossing: U moet een SPN SAP/BW5 toevoegen aan een serviceaccount. Gedetailleerde informatie en stappen zijn beschikbaar in de SAP-documentatie.
Mogelijk ondervindt u een vergelijkbare, maar niet identieke fout die in WireShark-traceringen wordt weergegeven als de volgende fout KRB5KDC_ERR_BADOPTION:
Deze fout geeft aan dat de SPN SAP/BW5 kan worden gevonden, maar niet onder Services waarvoor dit account gedelegeerde referenties kan presenteren op het tabblad Delegatie voor het gatewayserviceaccount. Volg de stappen voor het configureren van het gatewayserviceaccount voor standaard beperkte kerberos-delegering om dit probleem op te lossen.
Validatie: De juiste configuratie voorkomt dat algemene of onverwachte fouten worden weergegeven door de gateway. Als u nog steeds fouten ziet, controleert u de configuratie van de gateway zelf of de configuratie van de BW-server.
Referentiesfouten
In deze sectie worden de symptomen en oplossingsstappen voor problemen met referenties beschreven. Mogelijk ziet u ook algemene fouten uit de Power BI-service, zoals beschreven in de eerdere sectie over delegering.
Er zijn verschillende oplossingen, op basis van de symptomen die u in de gegevensbron (SAP BW) ziet, dus we zullen beide bekijken.
Symptoom 1: In het sectraces sec-disp+work[].trc-bestand van de BW-server ziet u traceringen die vergelijkbaar zijn met de volgende:
[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
Oplossing: voltooi de configuratiestappen om configuratieparameters voor gebruikerstoewijzing in te stellen op de gatewaycomputer, indien nodig. U moet deze stappen uitvoeren, zelfs als u Microsoft Entra Connect al hebt geconfigureerd.
Validatie: U kunt het rapport in de Power BI-service laden. Als u het rapport niet kunt laden, raadpleegt u de stappen in Symptoom 2.
Symptoom 2: In het sectraces sec-disp+work[].trc-bestand van de BW-server ziet u traceringen die vergelijkbaar zijn met de volgende:
[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
Oplossing: Controleer of de externe Kerberos-id voor de gebruiker overeenkomt met wat de sectraces weergeven.
- Open SAP-aanmelding.
- Gebruik de SU01-transactie.
- Bewerk de gebruiker.
- Ga naar het tabblad SNC en controleer of de SNC-naam overeenkomt met wat in uw logboeken wordt weergegeven.
Validatie: Wanneer deze correct is voltooid, kunt u rapporten maken en vernieuwen in de Power BI-service.
Gerelateerde inhoud
Zie de volgende bronnen voor meer informatie over de on-premises gegevensgateway en DirectQuery: