Share via


Kerberoksen kertakirjautumisen käyttäminen kertakirjautumista varten SAP BW:hen CommonCryptoLibin (sapcrypto.dll) avulla

Tässä artikkelissa kerrotaan, miten voit määrittää SAP BW -tietolähteesi ottamaan käyttöön kertakirjautumisen Power BI -palvelu CommonCryptoLibin (sapcrypto.dll) avulla.

Muistiinpano

Ennen kuin yrität päivittää SAP BW -pohjaisen raportin, joka käyttää Kerberos-kertakirjautumista, suorita sekä tässä artikkelissa olevat vaiheet että artikkelissa Kerberos-kertakirjautumisen määrittäminen olevat vaiheet. CommonCryptoLibin käyttäminen SNC-kirjastona mahdollistaa kertakirjautumisyhteydet sekä SAP BW -sovelluspalvelimiin että SAP BW -viestipalvelimiin.

Muistiinpano

Molempien kirjastojen (sapcrypto ja gx64krb5) määrittäminen samalle yhdyskäytäväpalvelimelle on skenaario, jota ei tueta. Molempien kirjastojen määrittämistä samalle yhdyskäytäväpalvelimelle ei suositella, koska se johtaa kirjastojen yhdistelmään. Jos haluat käyttää molempia kirjastoja, erota yhdyskäytäväpalvelin kokonaan toisistaan. Määritä esimerkiksi gx64krb5 palvelimelle A ja sitten sapcrypto palvelimelle B. Muista, että palvelimessa A, joka käyttää gx64krb5:tä, ei tueta, koska SAP ja Microsoft eivät enää tue gx64krb5:tä.

SAP BW:n määrittäminen kertakirjautumista varten CommonCryptoLibiä käyttämällä

Muistiinpano

Paikallinen tietoyhdyskäytävä on 64-bittinen ohjelmisto, ja se edellyttää siksi 64-bittistä versiota CommonCryptoLibistä (sapcrypto.dll) BW SSO:n suorittamiseen. Jos aiot testata kertakirjautumisyhteyttä SAP BW -palvelimeen SAP GUIssa ennen kertakirjautumisyhteyden muodostamista yhdyskäytävän kautta (suositus), tarvitset myös CommonCryptoLibin 32-bittisen version, koska SAP GUI on 32-bittinen ohjelmisto.

  1. Varmista, että BW-palvelimesi on määritetty oikein Kerberos-kertakirjautumista varten CommonCryptoLibin avulla. Jos näin on, pääset BW-palvelimeen kertakirjautumista käyttämällä (joko suoraan tai SAP BW -viestipalvelimen kautta) SAP GUIn kaltaisella SAP-työkalulla, joka on määritetty käyttämään CommonCryptoLibiä.

    Lisätietoja asennusvaiheista on kohdassa SAP-kertakirjautuminen: Todentaminen Kerberoksen/SPNEGOn avulla. BW-palvelimesi tulee käyttää CommonCryptoLibiä sen SNC-kirjastona, ja sillä tulee olla SNC-nimi, joka alkaa merkkijonolla CN=, esimerkiksi CN=BW1. Lisätietoja SNC-nimen vaatimuksista (erityisesti snc/identity/as parameter) on kohdassa Kerberos-määrityksen SNC-parametrit.

  2. Jos et ole vielä tehnyt niin, asenna SAP .NET Näyttöyhteys orin x64-versio tietokoneeseen, johon yhdyskäytävä on asennettu.

    Voit tarkistaa, onko osa asennettu, yrittämällä muodostaa yhteyden BW-palvelimeen Power BI Desktopissa yhdyskäytävän tietokoneesta. Jos et voi muodostaa yhteyttä 2.0-toteutuksen avulla, .NET Näyttöyhteys oria ei ole asennettu tai sitä ei ole asennettu GAC:hen.

  3. Varmista, että SAP Secure Login Client (SLC) ei ole käynnissä tietokoneessa, johon yhdyskäytävä on asennettu.

    SLC tallentaa Kerberos-liput välimuistiin tavalla, joka voi häiritä yhdyskäytävän kykyä käyttää Kerberos-kertakirjautumista.

  4. Jos SLC on asennettu, poista sen asennus tai varmista, että suljet SAP Secure Login Clientin. Napsauta hiiren kakkospainikkeella ilmaisinalueella olevaa kuvaketta ja valitse Kirjaudu ulos ja Lopeta , ennen kuin yrität kertakirjautumisyhteyttä yhdyskäytävän avulla.

    SLC:n käyttöä ei tueta Windows Server -koneissa. Lisätietoja on kohdassa SAP Note 2780475 (s-käyttäjä vaaditaan).

    SAP Secure Login Client

  5. Jos poistat SLC-asennuksen tai valitset Kirjaudu ulos ja Lopeta, avaa cmd-ikkuna ja kirjoita klist purge poistaaksesi välimuistissa olevat Kerberos-liput, ennen kuin yrität kertakirjautumisyhteyden muodostamista yhdyskäytävän kautta.

  6. Lataa 64-bittinen CommonCryptoLib (sapcrypto.dll) -versio 8.5.25 tai uudempi SAP Launchpadista ja kopioi se yhdyskäytäväkoneesi kansioon. Luo samassa hakemistossa, johon kopioit sapcrypto.dll, tiedosto nimeltä sapcrypto.ini käyttäen seuraavaa sisältöä:

    ccl/snc/enable_kerberos_in_client_role = 1
    

    .ini sisältää CommonCryptoLibin edellyttämät määritystiedot, jotka mahdollistavat kertakirjautumisen yhdyskäytäväskenaariossa.

    Muistiinpano

    Nämä tiedostot on tallennettava samaan sijaintiin. toisin sanoen / path/to/sapcrypto/ -ohjausobjektin tulee sisältää sekä sapcrypto.ini että sapcrypto.dll.

    Sekä yhdyskäytäväpalvelun käyttäjä että Active Directory (AD) -käyttäjä, joksi palvelun käyttäjä tekeytyy, tarvitsee kummankin tiedoston luku- ja suoritus-oikeuden. Suosittelemme käyttöoikeuksien myöntämistä sekä .ini- että .dll-tiedostoille Todennetut käyttäjät -ryhmälle. Testausta varten voit myös erikseen myöntää nämä oikeudet sekä yhdyskäytäväpalvelun käyttäjälle että Active Directory -käyttäjälle, joita käytät testissä. Seuraavassa näyttökuvassa olemme myöntäneet Todennetut käyttäjät -ryhmälle sapcrypto.dll luku- ja suoritusoikeudet :

    Authenticated users

  7. Jos sinulla ei vielä ole SSO-yhteyden läpikulkuun haluamaasi yhdyskäytävään liitettyä SAP BW -tietolähdettä, lisää sellainen Yhdyskäytäviä hallinta -sivulla Power BI -palvelu. Jos tällainen tietolähde on jo, muokkaa sitä:

    • Valitse SAP Business Warehouse tietolähteen tyypiksi , jos haluat luoda kertakirjautumisyhteyden BW-sovelluspalvelimeen.
    • Valitse Sap Business Warehouse -viestipalvelin , jos haluat luoda kertakirjautumisyhteyden BW-viestipalvelimeen.
  8. SNC-kirjaston kohdalla valitse joko SNC_LIB- tai SNC_LIB_64 -ympäristömuuttuja tai Mukautettu.

    • Jos valitset SNC_LIB, määritä SNC_LIB_64 ympäristömuuttujan arvo yhdyskäytäväkoneessa yhdyskäytäväkoneen 64-bittisen sapcrypto.dll absoluuttiseen polkuun. Esimerkiksi C:\Users\Test\Desktop\sapcrypto.dll.

    • Jos valitset Mukautettu, liitä sapcrypto.dll absoluuttinen polku Mukautetun SNC-kirjaston polku -kenttään, joka näkyy Yhdyskäytäviä hallinta -sivulla.

  9. Kirjoita SNC-kumppanin nimi -kohtaan BW-palvelimen SNC-nimi. Varmista Lisäasetukset-kohdassa, että Käytä DirectQuery-kyselyissä kertakirjautumista Kerberoksen kautta -kohta on valittuna. Täytä muut kentät samalla tavalla kuin Windows-todentamisen yhteyttä muodostettaessa PBI Desktopista.

  10. Luo CCL_PROFILE järjestelmän ympäristömuuttuja ja määritä sen arvoksi polku sapcrypto.ini.

    CCL_PROFILE system environment variable

    Sapcrypto-.dll- ja .ini-tiedostojen on oltava samassa sijainnissa. Yllä olevassa esimerkissä sekä sapcrypto.ini että sapcrypto.dll sijaitsevat työpöydällä.

  11. Käynnistä yhdyskäytäväpalvelu uudelleen.

    Restart gateway service

  12. Power BI -raportin suorittaminen

Vianmääritys

Jos et pysty päivittämään raporttia Power BI -palvelu, voit käyttää ongelman diagnosoinnissa yhdyskäytävän jäljitystä, CPIC-jäljitystä ja CommonCryptoLib-jäljitystä. Koska CPIC-jäljitys ja CommonCryptoLib ovat SAP-tuotteita, Microsoft ei tarjoa niille tukea.

Yhdyskäytävän lokit

  1. Yritä toistaa ongelma.

  2. Avaa yhdyskäytäväsovellus ja valitse Vie lokitDiagnostiikka-välilehdeltä.

    Export gateway logs

CPIC-jäljitys

  1. Jos haluat ottaa CPIC-jäljityksen käyttöön, määritä kaksi ympäristömuuttujaa: CPIC_TRACE ja CPIC_TRACE_DIR.

    Ensimmäinen muuttuja määrittää jäljitystason, ja toinen muuttuja määrittää jäljitystiedoston hakemiston. Hakemiston on oltava sijainti, johon Todennetut käyttäjät -ryhmän jäsenet voivat kirjoittaa.

  2. Määritä CPIC_TRACE arvoksi 3 ja CPIC_TRACE_DIR mihin tahansa hakemistoon, johon haluat kirjoittaa jäljitystiedostot. Esimerkkejä:

    CPIC tracing

  3. Yritä toistaa ongelma ja varmista, että CPIC_TRACE_DIR sisältää jäljitystiedostoja.

    CPIC-jäljitys voi diagnosoida ylemmän tason ongelmia, kuten sapcrypto.dll-kirjaston lataamisen epäonnistumisen. Tässä on esimerkiksi katkelma CPIC-jäljitystiedostosta, jossa ilmeni .dll latausvirhe:

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

    Jos kohtaat tällaisen virheen, mutta olet määrittänyt luku- ja suoritusoikeudet sapcrypto.dll ja sapcrypto.ini yllä olevan osion ohjeiden mukaisesti, kokeile määrittää samat luku- ja suoritusoikeudet tiedostojen sisältävään kansioon.

    Jos et edelleenkään pysty lataamaan .dll, kokeile ottaa tiedoston valvonta käyttöön. Valvontalokien tarkastelu Windows-Tapahtumienvalvonta voi auttaa selvittämään, miksi tiedoston lataaminen epäonnistuu. Etsi virhekirjaus, jonka on aloittanut active directory -käyttäjäksi tekeytyminen. Esimerkiksi käyttäjäksi MYDOMAIN\mytestuser tekeytyneen tilin virhe voi näyttää valvontalokissa seuraavankaltaisilta:

    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-jäljitys

  1. Ota CommonCryptoLib-jäljitys käyttöön lisäämällä nämä rivit aiemmin luomaasi sapcrypto.ini tiedostoon:

    ccl/trace/level=5
    ccl/trace/directory=<drive>:\logs\sectrace
    
  2. Muuta asetuksen ccl/trace/directory arvoksi sijainti, johon Todennetut käyttäjät -ryhmän jäsenet voivat kirjoittaa.

  3. Vaihtoehtoisesti voit luoda uuden .ini tiedoston toiminnan muuttamiseksi. Luo samassa hakemistossa, jossa sapcrypto.ini ja sapcrypto.dll, tiedosto nimeltä sectrace.ini käyttäen seuraavaa sisältöä. Korvaa - DIRECTORY asetus tietokoneessasi olevalla sijainnilla, jonne Todennetut käyttäjät -ryhmän jäsenet voivat kirjoittaa:

    LEVEL = 5
    DIRECTORY = <drive>:\logs\sectrace
    
  4. Yritä toistaa ongelma ja varmista, että HAKEMISTO-kohtaan määritetty sijainti sisältää jäljitystiedostoja.

  5. Kun olet valmis, poista CPIC- ja CCL-jäljitys käytöstä.

    Lisätietoja CommonCryptoLib-jäljitymisestä on kohdassa SAP Note 2491573 (SAP:n s-käyttäjä vaaditaan).

Tekeytymisen

Tässä osiossa kuvataan oireiden vianmääritystä ja tekeytymisongelmien ratkaisuvaiheita.

Oire: Kun katsot GatewayInfo[date].log näet seuraavan kaltaisen merkinnän: Tietoja käyttäjäksi tekeytymisestä DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation). Jos ImpersonationLevel-arvo eroaa Impersonation-funktiosta, tekeytyminen ei toimi oikein.

Ratkaisu: Noudata ohjeita artikkelissa Paikallisen käytännön oikeuksien myöntäminen yhdyskäytävän palvelutilille yhdyskäytäväkoneessa . Käynnistä yhdyskäytäväpalvelu uudelleen määrityksen muuttamisen jälkeen.

Vahvistus: Päivitä tai luo raportti ja kerää GatewayInfo[date].log. Avaa uusin GatewayInfo-lokitiedosto ja tarkista seuraava merkkijono uudelleen: Tietoja käyttäjäksi tekeytymisestä TOIMIALUE\Käyttäjä (IsAuthenticated: True, ImpersonationLevel: Impersonation) varmistaaksesi, että ImpersonationLevel-funktion arvo vastaa Impersonation-funktiota.

Delegointi

Delegointiongelmat näkyvät yleensä Power BI -palvelu yleisinä virheinä. Sen määrittämiseksi, onko delegointi ongelma, on hyödyllistä kerätä Wireshark-jäljitykset ja käyttää Kerberosta suodattimena. Lisätietoja Kerberos-virheistä saat blogikirjoituksesta. Tässä osiossa kuvataan delegointiongelmien oireiden ja ratkaisuvaiheiden vianmääritys.

Oire: voit kohdata Power BI -palvelu odottamattoman virheen, joka on samankaltainen kuin seuraavassa näyttökuvassa. GatewayInfo[date].log näet [DM.GatewayCoren], joka havaitsee poikkeuksen clientPipelineId-kohteen Ado-kyselyn suoritusyrityksen aikana ja tuonti [0D_NW_CHANN] ei vastaa vientiä.

Screenshot of unhelpful error

Näet Mashup[date].log yleisen virheen GSS-API(maj): Tunnistetietoja ei annettu.

Kun tutkit CPIC-jäljitystä (sec-Microsoft.Mashup*.trc), näet jotain seuraavantapaista:

[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

Virhe käy selkeämmäksi yhdyskäytäväkoneen sec-Microsoft.Mashup.Con-[].trc toimituksissa:

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

Voit myös nähdä ongelman, jos tarkastelet WireShark-jäljitystiedostoja.

Screenshot of tracing program showing an error

Muistiinpano

Muut KRB5KDC_ERR_PREAUTH_REQUIRED virheet voidaan turvallisesti ohittaa.

Ratkaisu: Sinun on lisättävä SPN SAP/BW5 palvelutiliin. Tarkat tiedot ja osavaiheet ovat käytettävissä SAP-dokumentaatiossa.

Saatat kohdata samanlaisen, mutta ei identtisen virheen, joka ilmenee WireShark-jäljitystoiminnossa, koska seuraava virhe KRB5KDC_ERR_BADOPTION:

Screenshot of WireShark program showing a different error

Tämä virheilmoitus ilmaisee, että SPN SAP/BW5 löytyi, mutta tämä tili ei voi esittää delegoituja tunnistetietoja yhdyskäytävän palvelutilin Delegointi-välilehdessä. Voit korjata tämän ongelman määrittämällä yhdyskäytävän palvelutilin vakiomuotoiselle rajoitetulle kerberos-delegoinnille.

Vahvistus: kunnollinen määritys estää yleisten tai odottamattomien virheiden esittämisen yhdyskäytävässä. Jos näet edelleen virheitä, tarkista yhdyskäytävän määritys tai BW-palvelimen määritys.

Tunnistetietovirheet

Tässä osiossa kuvataan tunnistetietojen virheongelmien oireiden ja ratkaisuvaiheiden vianmääritys. Saatat myös nähdä yleisiä virheitä Power BI -palvelu aiemmassa delegointia koskevassa osiossa kuvatulla tavalla.

Tarkkuudet vaihtelevat tietolähteessä (SAP BW) näkemiesi oireiden perusteella, joten tarkastelemme molempia.

Oire 1: Kohdassa sectraces sec-disp+work[].trc BW-palvelimesta näet seuraavankaltaisia jäljitystiedostoja:

[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

Ratkaisu: Suorita määritysvaiheet määrittääksesi käyttäjän yhdistämisen määritysparametrit yhdyskäytäväkoneessa tarvittaessa. Sinun on suoritettava nämä vaiheet, vaikka sinulla olisi jo Microsoft Entra -Näyttöyhteys määritettynä.

Vahvistus: Voit ladata raportin onnistuneesti Power BI -palvelu. Jos ongelma ei onnistu, katso ohjeita kohdasta oire 2.

Oire 2: kohdassa sectraces sec-disp+work[].trc BW-palvelimesta näet seuraavankaltaisia jäljitystiedostoja:

[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

Ratkaisu: Tarkista, vastaako käyttäjän Kerberoksen ulkoinen tunnus mitä sectraces näyttää.

  1. Avaa SAP-kirjautuminen.
  2. Käytä SU01-tapahtumaa.
  3. Muokkaa käyttäjää.
  4. Siirry SNC-välilehteen ja varmista, että SNC-nimi vastaa lokeissa näkyvää nimeä.

Vahvistus: Kun tämä on valmis, voit luoda ja päivittää raportteja Power BI -palvelu.

Lisätietoja paikallisesta tietoyhdyskäytävästä ja DirectQuerysta on seuraavissa resursseissa: