Share via


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 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 voor Kerberos configureren uitvoeren. Als u CommonCryptoLib gebruikt als uw SNC-bibliotheek, 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.

  1. 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).

  2. Als u dit nog niet hebt gedaan, installeert u de x64-versie van de SAP .NET-Verbinding maken or 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-Verbinding maken or niet geïnstalleerd of niet geïnstalleerd in de GAC.

  3. 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.

  4. 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.

    SAP Secure Login Client

  5. 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.

  6. 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 Active Directory-gebruiker die u gebruikt voor het testen. In de volgende schermopname hebben we de groep Geverifieerde gebruikers lees- en uitvoermachtigingen verleend voor sapcrypto.dll:

    Authenticated users

  7. Als u nog geen SAP BW-gegevensbron hebt die is gekoppeld aan de gateway waarmee u de SSO-verbinding wilt doorlopen, voegt u er een toe op de pagina 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.
  8. 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.

  9. 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.

  10. Maak een CCL_PROFILE systeemomgevingsvariabele en stel de waarde ervan in op het pad naar sapcrypto.ini.

    CCL_PROFILE system environment variable

    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.

  11. Start de gatewayservice opnieuw op.

    Restart gateway service

  12. Een Power BI-rapport uitvoeren

Problemen oplossen

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

  1. Reproduceer het probleem.

  2. Open de gateway-app en selecteer Logboeken exporteren op het tabblad Diagnostische gegevens.

    Export gateway logs

CPIC-tracering

  1. 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.

  2. Stel CPIC_TRACE in op3 en CPIC_TRACE_DIR op de map waarnaar u de traceringsbestanden wilt schrijven. Voorbeeld:

    CPIC tracing

  3. 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 Active Directory-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

  1. 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
    
  2. Wijzig de ccl/trace/directory optie in een locatie waarnaar leden van de groep Geverifieerde gebruikers kunnen schrijven.

  3. 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
    
  4. Reproduceer het probleem en controleer of de locatie waarnaar wordt verwezen door DIRECTORY traceringsbestanden bevat.

  5. 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 correct.

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 volgende 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 het 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, vergelijkbaar met de volgende schermopname. de GatewayInfo[date].log ziet u [DM.GatewayCore] een uitzondering opnemen tijdens de uitvoering van Ado-querypoging voor clientPipelineId en het importeren [0D_NW_CHANN] komt overeen met geen exports.

Screenshot of unhelpful error

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.

Screenshot of tracing program showing an error

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:

Screenshot of WireShark program showing a different error

Deze fout geeft aan dat de SPN SAP/BW5 kan worden gevonden, maar niet in de services waarvoor dit account gedelegeerde referenties kan presenteren op het tabblad Delegatie vanuit 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 algemene of onverwachte fouten die door de gateway worden weergegeven. 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 de sectraces sec-disp+work[].trc 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 de Microsoft Entra-Verbinding maken al hebt geconfigureerd.

Validatie: U kunt het rapport in de Power BI-service laden. Als dit niet lukt, raadpleegt u de stappen in symptoom 2.

Symptoom 2: In de sectraces sec-disp+work[].trc 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.

  1. Open SAP-aanmelding.
  2. Gebruik de SU01-transactie.
  3. Bewerk de gebruiker.
  4. 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.

Zie de volgende bronnen voor meer informatie over de on-premises gegevensgateway en DirectQuery: