Dela via


Använda enkel inloggning med Kerberos för enkel inloggning för enkel inloggning till SAP BW med CommonCryptoLib (sapcrypto.dll)

Den här artikeln beskriver hur du konfigurerar din SAP BW-datakälla för att aktivera enkel inloggning från Power BI-tjänst med hjälp av CommonCryptoLib (sapcrypto.dll).

Kommentar

Innan du försöker uppdatera en SAP BW-baserad rapport som använder Enkel inloggning med Kerberos ska du utföra både stegen i den här artikeln och stegen i Konfigurera enkel inloggning med Kerberos. Med CommonCryptoLib som SNC-bibliotek kan du använda SSO-anslutningar till både SAP BW-programservrar och SAP BW-meddelandeservrar.

Kommentar

Att konfigurera båda biblioteken (sapcrypto och gx64krb5) på samma gatewayserver är ett scenario som inte stöds. Vi rekommenderar inte att du konfigurerar båda biblioteken på samma gatewayserver eftersom det leder till en blandning av bibliotek. Om du vill använda båda biblioteken separerar du gatewayservern helt. Konfigurera till exempel gx64krb5 för server A och sedan sapcrypto för server B. Kom ihåg att eventuella fel på server A som använder gx64krb5 inte stöds eftersom gx64krb5 inte längre stöds av SAP och Microsoft.

Konfigurera SAP BW för att aktivera enkel inloggning med CommonCryptoLib

Kommentar

Den lokala datagatewayen är 64-bitars programvara och kräver därför 64-bitarsversionen av CommonCryptoLib (sapcrypto.dll) för att utföra enkel inloggning med BW. Om du planerar att testa SSO-anslutningen till SAP BW-servern i SAP GUI innan du försöker ansluta med enkel inloggning via gatewayen (rekommenderas) behöver du även 32-bitarsversionen av CommonCryptoLib, eftersom SAP GUI är 32-bitars programvara.

  1. Kontrollera att BW-servern är korrekt konfigurerad för Kerberos SSO med CommonCryptoLib. Om så är fallet kan du använda enkel inloggning för att komma åt BW-servern (antingen direkt eller via en SAP BW-meddelandeserver) med ett SAP-verktyg som SAP GUI som har konfigurerats för att använda CommonCryptoLib.

    Mer information om installationssteg finns i SAP Enkel inloggning: Autentisera med Kerberos/SPNEGO. BW-servern bör använda CommonCryptoLib som sitt SNC-bibliotek och ha ett SNC-namn som börjar med CN=, till exempel CN=BW1. Mer information om SNC-namnkrav (specifikt snc/identity/as-parametern) finns i SNC-parametrar för Kerberos-konfiguration.

  2. Om du inte redan har gjort det installerar du x64-versionen av SAP .NET-Anslut eller på den dator som gatewayen har installerats på.

    Du kan kontrollera om komponenten har installerats genom att försöka ansluta till BW-servern i Power BI Desktop från gatewaydatorn. Om du inte kan ansluta med 2.0-implementeringen är .NET-Anslut orn inte installerad eller har inte installerats i GAC.

  3. Se till att SAP Secure Login Client (SLC) inte körs på den dator där gatewayen är installerad.

    SLC cachelagrar Kerberos-biljetter på ett sätt som kan störa gatewayens förmåga att använda Kerberos för enkel inloggning.

  4. Om SLC är installerat avinstallerar du det eller avslutar SAP Secure Login Client. Högerklicka på ikonen i systemfältet och välj Logga ut och avsluta innan du försöker ansluta med enkel inloggning med hjälp av gatewayen.

    SLC stöds inte för användning på Windows Server-datorer. Mer information finns i SAP Note 2780475 (s-user required).

    SAP Secure Login Client

  5. Om du avinstallerar SLC eller väljer Logga ut och avsluta öppnar du ett cmd-fönster och anger klist purge för att rensa cachelagrade Kerberos-biljetter innan du försöker ansluta med enkel inloggning via gatewayen.

  6. Ladda ned 64-bitars CommonCryptoLib (sapcrypto.dll) version 8.5.25 eller senare från SAP Launchpad och kopiera den till en mapp på gatewaydatorn. I samma katalog där du kopierade sapcrypto.dll skapar du en fil med namnet sapcrypto.ini med följande innehåll:

    ccl/snc/enable_kerberos_in_client_role = 1
    

    Filen .ini innehåller konfigurationsinformation som krävs av CommonCryptoLib för att aktivera enkel inloggning i gatewayscenariot.

    Kommentar

    Dessa filer måste lagras på samma plats. med andra ord bör /path/to/sapcrypto/ innehålla både sapcrypto.ini och sapcrypto.dll.

    Både gatewayens tjänstanvändare och den AD-användare (Active Directory) som tjänstanvändaren personifierar behöver behörigheter läsa och köra för båda filerna. Vi rekommenderar att du beviljar behörigheter för både .ini- och .dll-filerna till gruppen Autentiserade användare. I testsyfte kan du också uttryckligen bevilja dessa behörigheter till både gatewaytjänstanvändaren och den Active Directory-användare som du använder för testning. I följande skärmbild har vi beviljat gruppen Autentiserade användare läs- och körningsbehörigheter för sapcrypto.dll:

    Authenticated users

  7. Om du inte redan har en SAP BW-datakälla associerad med gatewayen som du vill att SSO-anslutningen ska flöda igenom lägger du till en på sidan Hantera gatewayer i Power BI-tjänst. Om du redan har en sådan datakälla kan du redigera den:

    • Välj SAP Business Warehouse som datakälltyp om du vill skapa en SSO-anslutning till en BW-programserver.
    • Välj Sap Business Warehouse Message Server om du vill skapa en SSO-anslutning till en BW-meddelandeserver.
  8. För SNC-bibliotek väljer du antingen miljövariabeln SNC_LIB eller SNC_LIB_64 eller Anpassad.

    • Om du väljer SNC_LIB måste du ange värdet för SNC_LIB_64 miljövariabeln på gatewaydatorn till den absoluta sökvägen för 64-bitarskopian av sapcrypto.dll på gatewaydatorn. Till exempel C:\Users\Test\Desktop\sapcrypto.dll.

    • Om du väljer Anpassad klistrar du in den absoluta sökvägen till sapcrypto.dll i fältet Anpassad SNC-bibliotekssökväg som visas på sidan Hantera gatewayer .

  9. För SNC-partnernamn anger du SNC-namnet på BW-servern. Under Avancerade inställningar kontrollerar du att Använd enkel inloggning via Kerberos för DirectQuery-frågor är markerat. Fyll i de andra fälten som om du upprättade en Windows-autentiseringsanslutning från PBI Desktop.

  10. Skapa en CCL_PROFILE systemmiljövariabel och ange dess värde till sökvägen till sapcrypto.ini.

    CCL_PROFILE system environment variable

    Sapcrypto-.dll- och .ini-filerna måste finnas på samma plats. I exemplet ovan finns både sapcrypto.ini och sapcrypto.dll på skrivbordet.

  11. Starta om gatewaytjänsten.

    Restart gateway service

  12. Köra en Power BI-rapport

Felsökning

Om du inte kan uppdatera rapporten i Power BI-tjänst kan du använda gatewayspårning, CPIC-spårning och CommonCryptoLib-spårning för att diagnostisera problemet. Eftersom CPIC-spårning och CommonCryptoLib är SAP-produkter kan Microsoft inte ge support för dem.

Gatewayloggar

  1. Återskapa problemet.

  2. Öppna gatewayappen och välj Exportera loggarfliken Diagnostik.

    Export gateway logs

CPIC-spårning

  1. Om du vill aktivera CPIC-spårning anger du två miljövariabler: CPIC_TRACE och CPIC_TRACE_DIR.

    Den första variabeln anger spårningsnivån och den andra variabeln anger spårningsfilkatalogen. Katalogen måste vara en plats som medlemmar i gruppen Autentiserade användare kan skriva till.

  2. Ange CPIC_TRACE till 3 och CPIC_TRACE_DIR till den katalog som du vill att spårningsfilerna ska skrivas till. Till exempel:

    CPIC tracing

  3. Återskapa problemet och se till att CPIC_TRACE_DIR innehåller spårningsfiler.

    CPIC-spårning kan diagnostisera problem på högre nivå, till exempel ett fel vid inläsning av sapcrypto.dll-biblioteket. Här är till exempel ett kodfragment från en CPIC-spårningsfil där ett .dll inläsningsfel uppstod:

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

    Om det uppstår ett sådant fel men du har angett läs- och körbehörigheterna på sapcrypto.dll och sapcrypto.ini enligt beskrivningen i avsnittet ovan kan du prova att ange samma läs- och körbehörigheter för mappen som innehåller filerna.

    Om du fortfarande inte kan läsa in .dll kan du prova att aktivera granskning för filen. Om du undersöker de resulterande granskningsloggarna i Windows-Loggboken kan det hjälpa dig att avgöra varför filen inte kan läsas in. Leta efter en felpost som initierats av den personifierade Active Directory-användaren. För den personifierade användaren MYDOMAIN\mytestuser skulle till exempel ett fel i granskningsloggen se ut ungefär så här:

    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-spårning

  1. Aktivera CommonCryptoLib-spårning genom att lägga till dessa rader i den sapcrypto.ini fil som du skapade tidigare:

    ccl/trace/level=5
    ccl/trace/directory=<drive>:\logs\sectrace
    
  2. Ändra alternativet ccl/trace/directory till en plats som medlemmar i gruppen Autentiserade användare kan skriva till.

  3. Du kan också skapa en ny .ini fil för att ändra det här beteendet. Skapa en fil med namnet sectrace.ini i samma katalog som sapcrypto.ini och sapcrypto.dll med följande innehåll. Ersätt alternativet DIRECTORY med en plats på datorn som medlemmar i gruppen Autentiserade användare kan skriva till:

    LEVEL = 5
    DIRECTORY = <drive>:\logs\sectrace
    
  4. Återskapa problemet och kontrollera att platsen som pekas på av DIRECTORY innehåller spårningsfiler.

  5. När du är klar inaktiverar du CPIC- och CCL-spårning.

    Mer information om CommonCryptoLib-spårning finns i SAP Note 2491573 (SAP s-user required).

Personifiering

I det här avsnittet beskrivs felsökningssymptom och lösningssteg för personifieringsproblem.

Symptom: När du tittar på GatewayInfo[date].log hittar du en post som liknar följande: Om att personifiera användaren DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation). Om värdet för ImpersonationLevel skiljer sig från Personifiering sker inte personifieringen korrekt.

Lösning: Följ stegen i artikeln bevilja lokal principbehörighet för gateway-tjänstkontot på gatewaydatorn . Starta om gatewaytjänsten när du har ändrat konfigurationen.

Validering: Uppdatera eller skapa rapporten och samla in GatewayInfo[date].log. Öppna den senaste GatewayInfo-loggfilen och kontrollera igen följande sträng: Om att personifiera användaren DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation) för att säkerställa att värdet för ImpersonationLevel matchar personifiering.

Delegering

Delegeringsproblem visas vanligtvis i Power BI-tjänst som allmänna fel. För att avgöra om delegering är problemet är det användbart att samla in Wireshark-spårningarna och använda Kerberos som ett filter. Referens för Kerberos-fel finns i blogginlägget. I resten av det här avsnittet beskrivs felsökningssymptom och lösningssteg för delegeringsproblem.

Symptom: I Power BI-tjänst kan det uppstå ett oväntat fel som liknar följande skärmbild. GatewayInfo[date].log du ser [DM.GatewayCore] mata in ett undantag under Ado-frågekörningsförsök för clientPipelineId och importen [0D_NW_CHANN] matchar inga exporter.

Screenshot of unhelpful error

I Mashup[date].log visas det allmänna felet GSS-API(maj): Inga autentiseringsuppgifter angavs.

Om du tittar på CPIC-spårningarna (sec-Microsoft.Mashup*.trc) ser du något som liknar följande:

[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

Felet blir tydligare i sectraces från gatewaydatorn 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.

Du kan också se problemet om du tittar på WireShark-spårningar.

Screenshot of tracing program showing an error

Kommentar

De andra felen KRB5KDC_ERR_PREAUTH_REQUIRED kan ignoreras på ett säkert sätt.

Lösning: Du måste lägga till ett SPN SAP/BW5 till ett tjänstkonto. Detaljerad information och steg finns i SAP-dokumentationen.

Du kan stöta på ett liknande men inte identiskt fel som visas i WireShark-spårningar som följande fel KRB5KDC_ERR_BADOPTION:

Screenshot of WireShark program showing a different error

Det här felet anger att SPN SAP/BW5 kunde hittas, men det finns inte i de tjänster som det här kontot kan presentera delegerade autentiseringsuppgifter för på fliken Delegering från gatewaytjänstkontot. Åtgärda problemet genom att följa stegen för att konfigurera gatewaytjänstkontot för standard kerberos-begränsad delegering.

Validering: Korrekt konfiguration förhindrar att allmänna eller oväntade fel visas av gatewayen. Om du fortfarande ser fel kontrollerar du konfigurationen av själva gatewayen eller konfigurationen av BW-servern.

Autentiseringsfel

I det här avsnittet beskrivs felsökningssymtom och lösningssteg för problem med autentiseringsuppgifter. Du kan också se allmänna fel från Power BI-tjänst, enligt beskrivningen i det tidigare avsnittet om delegering.

Det finns olika lösningar, baserat på de symptom du ser i datakällan (SAP BW), så vi granskar båda.

Symptom 1: I sectraces sec-disp+work[].trc från BW-servern visas spårningar som liknar följande:

[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

Lösning: Slutför konfigurationsstegen för att ange konfigurationsparametrar för användarmappning på gatewaydatorn om det behövs. Du måste slutföra de här stegen även om du redan har Microsoft Entra-Anslut konfigurerat.

Validering: Du kommer att kunna läsa in rapporten i Power BI-tjänst. Om det inte lyckas kan du läsa stegen i symptom 2.

Symptom 2: I sectraces sec-disp+work[].trc från BW-servern visas spårningar som liknar följande:

[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

Lösning: Kontrollera om Kerberos externa ID för användaren matchar vad sectraces visar.

  1. Öppna SAP-inloggning.
  2. Använd SU01-transaktionen.
  3. Redigera användaren.
  4. Gå till fliken SNC och kontrollera att SNC-namnet matchar det som visas i loggarna.

Validering: När du är klar kan du skapa och uppdatera rapporter i Power BI-tjänst.

Mer information om den lokala datagatewayen och DirectQuery finns i följande resurser: