CommonCryptoLib (sapcrypto.dll) kullanarak SSO'dan SAP BW'ye Kerberos çoklu oturum açma özelliğini kullanma

Bu makalede, CommonCryptoLib (sapcrypto.dll) kullanarak SAP BW veri kaynağınızı Power BI hizmeti SSO'yu etkinleştirecek şekilde yapılandırma açıklanmaktadır.

Not

Kerberos SSO kullanan SAP BW tabanlı bir raporu yenilemeye çalışmadan önce, bu makaledeki adımları ve Kerberos SSO'sunu yapılandırma adımlarını tamamlayın. SNC kitaplığınız olarak CommonCryptoLib kullanmak hem SAP BW Uygulama Sunucularına hem de SAP BW İleti Sunucularına SSO bağlantıları sağlar.

Not

Aynı ağ geçidi sunucusunda her iki kitaplığın da (sapcrypto ve gx64krb5) yapılandırılması desteklenmeyen bir senaryodur. Her iki kitaplığın da aynı ağ geçidi sunucusunda yapılandırılması önerilmez çünkü kitaplıkların bir karışımına yol açar. Her iki kitaplığı da kullanmak istiyorsanız lütfen ağ geçidi sunucusunu tamamen ayırın. Örneğin, A sunucusu için gx64krb5'i ve ardından B sunucusu için sapcrypto'yu yapılandırın. Gx64krb5 artık SAP ve Microsoft tarafından desteklenmediğinden, A sunucusunda gx64krb5 kullanan hataların desteklenmediğini unutmayın.

CommonCryptoLib kullanarak SSO'yu etkinleştirmek için SAP BW'yi yapılandırma

Not

Şirket içi veri ağ geçidi 64 bit yazılımdır ve bu nedenle BW SSO gerçekleştirmek için CommonCryptoLib'in (sapcrypto.dll) 64 bit sürümünü gerektirir. Ağ geçidi üzerinden SSO bağlantısı denemeden önce SAP GUI'de SAP BW sunucunuzla SSO bağlantısını test etmek istiyorsanız (önerilir), SAP GUI 32 bit yazılım olduğundan CommonCryptoLib'in 32 bit sürümüne de ihtiyacınız olacaktır.

  1. CommonCryptoLib kullanarak BW sunucunuzun Kerberos SSO için doğru yapılandırıldığından emin olun. Bu durumda, CommonCryptoLib kullanmak üzere yapılandırılmış SAP GUI gibi bir SAP aracıyla BW sunucunuza (doğrudan veya SAP BW İleti Sunucusu aracılığıyla) erişmek için SSO kullanabilirsiniz.

    Kurulum adımları hakkında daha fazla bilgi için bkz . SAP Çoklu Oturum Açma: Kerberos/SPNEGO ile kimlik doğrulama. BW sunucunuz CommonCryptoLib'i SNC Kitaplığı olarak kullanmalıdır ve CN=BW1 gibi CN= ile başlayan bir SNC adına sahip olmalıdır. SNC ad gereksinimleri (özellikle snc/identity/as parametresi) hakkında daha fazla bilgi için bkz . Kerberos Yapılandırması için SNC Parametreleri.

  2. Henüz yapmadıysanız, ağ geçidinin yüklü olduğu bilgisayara SAP .NET Bağlan veya x64 sürümünü yükleyin.

    Ağ geçidi bilgisayarından Power BI Desktop'taki BW sunucunuza bağlanmayı deneyerek bileşenin yüklenip yüklenmediğini denetleyebilirsiniz. 2.0 uygulamasını kullanarak bağlanamıyorsanız, .NET Bağlan or yüklü değildir veya GAC'ye yüklenmemiştir.

  3. SAP Güvenli Oturum Açma İstemcisi’nin (SLC) ağ geçidinin yüklü olduğu bilgisayarda çalışmadığından emin olun.

    SLC, Kerberos biletlerini ağ geçidinin SSO için Kerberos’u kullanma özelliğini engelleyebilecek şekilde önbelleğe alır.

  4. SLC yüklüyse kaldırın veya SAP Güvenli Oturum Açma İstemcisi'den çıktığınıza emin olun. Sistem tepsisindeki simgeye sağ tıklayın ve ağ geçidini kullanarak SSO bağlantısı denemeden önce Oturumu Kapat ve Çık'ı seçin.

    SLC, Windows Server makinelerinde kullanılmak üzere desteklenmez. Daha fazla bilgi için bkz . SAP Not 2780475 (s-user gereklidir).

    SAP Secure Login Client

  5. SLC'yi kaldırırsanız veya Oturumu Kapat ve Çıkış'ı seçerseniz, ağ geçidi üzerinden SSO bağlantısı denemeden önce önbelleğe alınmış Kerberos biletlerini temizlemek için bir cmd penceresi açın ve girinklist purge.

  6. SAP Launchpad'den 64 bit CommonCryptoLib (sapcrypto.dll) sürüm 8.5.25 veya üzerini indirin ve ağ geçidi makinenizdeki bir klasöre kopyalayın. sapcrypto.dll kopyaladığınız dizinde, aşağıdaki içeriğe sahip sapcrypto.ini adlı bir dosya oluşturun:

    ccl/snc/enable_kerberos_in_client_role = 1
    

    .ini dosyası, ağ geçidi senaryosunda SSO'yu etkinleştirmek için CommonCryptoLib tarafından gereken yapılandırma bilgilerini içerir.

    Not

    Bu dosyalar aynı konumda depolanmalıdır; başka bir deyişle, /path/to/sapcrypto/ hem sapcrypto.ini hem de sapcrypto.dll içermelidir.

    Hem ağ geçidi hizmet kullanıcısı hem de hizmet kullanıcısının kimliğine bürüneceği Active Directory (AD) kullanıcısı her iki dosya için okuma ve yürütme izinlerine gereksinim duyar. Kimliği Doğrulanmış Kullanıcılar grubuna hem .ini hem de .dll dosyaları üzerinde izinler vermenizi öneririz. Test amacıyla, bu izinleri hem ağ geçidi hizmeti kullanıcısına hem de test için kullandığınız Active Directory kullanıcısına açıkça verilmektedir. Aşağıdaki ekran görüntüsünde Kimliği Doğrulanmış Kullanıcılar grubuna sapcrypto.dll için Okuma ve yürütme izinleri verdik:

    Authenticated users

  7. SSO bağlantısının akmasını istediğiniz ağ geçidiyle ilişkilendirilmiş bir SAP BW veri kaynağınız yoksa, Power BI hizmeti Ağ geçitlerini yönet sayfasına bir veri kaynağı ekleyin. Zaten böyle bir veri kaynağınız varsa düzenleyin:

    • BW Uygulama Sunucusuna SSO bağlantısı oluşturmak istiyorsanız Veri Kaynağı Türü olarak SAP Business Warehouse'u seçin.
    • BW İleti Sunucusuna SSO bağlantısı oluşturmak istiyorsanız Sap Business Warehouse İleti Sunucusu'nu seçin.
  8. SNC Kitaplığı için SNC_LIB veya SNC_LIB_64 ortam değişkenini ya da Özel'i seçin.

    • SNC_LIB seçerseniz ağ geçidi makinesindeki SNC_LIB_64 ortam değişkeninin değerini ağ geçidi makinesindeki sapcrypto.dll 64 bit kopyasının mutlak yoluna ayarlamanız gerekir. Örneğin, C:\Users\Test\Desktop\sapcrypto.dll.

    • Özel'i seçerseniz, sapcrypto.dll için mutlak yolu Ağ geçitlerini yönet sayfasında görüntülenen Özel SNC Kitaplığı Yolu alanına yapıştırın.

  9. SNC İş Ortağı Adı için BW sunucusunun SNC Adını girin. Gelişmiş ayarlar'ın altında DirectQuery sorguları için Kerberos aracılığıyla SSO kullan seçeneğinin işaretli olduğundan emin olun. Diğer alanları PBI Desktop'tan Windows Kimlik Doğrulaması bağlantısı kuruyor gibi doldurun.

  10. bir CCL_PROFILE sistem ortamı değişkeni oluşturun ve değerini sapcrypto.ini olarak ayarlayın.

    CCL_PROFILE system environment variable

    Sapcrypto .dll ve .ini dosyaları aynı konumda bulunmalıdır. Yukarıdaki örnekte hem sapcrypto.ini hem de sapcrypto.dll masaüstünde bulunur.

  11. Ağ geçidi hizmetini yeniden başlatın.

    Restart gateway service

  12. Power BI raporu çalıştırma

Sorun giderme

Power BI hizmeti raporu yenileyemiyorsanız, sorunu tanılamak için ağ geçidi izleme, CPIC izleme ve CommonCryptoLib izlemeyi kullanabilirsiniz. CPIC izleme ve CommonCryptoLib SAP ürünleri olduğundan, Microsoft bunlar için destek sağlayamaz.

Ağ geçidi günlükleri

  1. Sorunu yeniden üretin.

  2. Ağ geçidi uygulamasını açın ve Tanılama sekmesinden Günlükleri dışarı aktar'ı seçin.

    Export gateway logs

CPIC izleme

  1. CPIC izlemeyi etkinleştirmek için iki ortam değişkeni ayarlayın: CPIC_TRACE ve CPIC_TRACE_DIR.

    İlk değişken izleme düzeyini, ikinci değişken ise izleme dosyası dizinini ayarlar. Dizin, Kimliği Doğrulanmış Kullanıcılar grubunun üyelerinin yazabileceği bir konum olmalıdır.

  2. CPIC_TRACE 3 olarak ayarlayın ve izleme dosyalarının yazılmasını istediğiniz dizine CPIC_TRACE_DIR. Örneğin:

    CPIC tracing

  3. Sorunu yeniden oluşturun ve CPIC_TRACE_DIR izleme dosyaları içerdiğinden emin olun.

    CPIC izleme, sapcrypto.dll kitaplığını yükleme hatası gibi daha yüksek düzey sorunları tanılayabilir. Örneğin, bir .dll yükleme hatasının oluştuğu CPIC izleme dosyasından bir kod parçacığı aşağıda verilmiştir:

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

    Böyle bir hatayla karşılaşırsanız ancak yukarıdaki bölümde açıklandığı gibi sapcrypto.dll ve sapcrypto.ini üzerinde Okuma ve Yürütme izinlerini ayarladıysanız, dosyaları içeren klasörde aynı Okuma ve Yürütme izinlerini ayarlamayı deneyin.

    .dll hala yükleyemiyorsanız dosya için denetimi açmayı deneyin. Windows Olay Görüntüleyicisi sonuçta elde edilen denetim günlüklerini incelemek, dosyanın neden yüklenmediğini belirlemenize yardımcı olabilir. Kimliğine bürünülen Active Directory kullanıcısı tarafından başlatılan bir hata girdisi arayın. Örneğin, kimliğine bürünülen kullanıcı MYDOMAIN\mytestuser için denetim günlüğündeki bir hata aşağıdakine benzer olacaktı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 izleme

  1. Daha önce oluşturduğunuz sapcrypto.ini dosyasına şu satırları ekleyerek CommonCryptoLib izlemeyi açın:

    ccl/trace/level=5
    ccl/trace/directory=<drive>:\logs\sectrace
    
  2. ccl/trace/directory Seçeneğini, Kimliği Doğrulanmış Kullanıcılar grubunun üyelerinin yazabileceği bir konum olarak değiştirin.

  3. Alternatif olarak, bu davranışı değiştirmek için yeni bir .ini dosyası oluşturun. sapcrypto.ini ve sapcrypto.dll ile aynı dizinde, aşağıdaki içeriğe sahip sectrace.ini adlı bir dosya oluşturun. DIRECTORY seçeneğini makinenizde Kimliği Doğrulanmış Kullanıcılar grubunun üyelerinin yazabileceği bir konumla değiştirin:

    LEVEL = 5
    DIRECTORY = <drive>:\logs\sectrace
    
  4. Sorunu yeniden oluşturun ve DIRECTORY tarafından işaret edilen konumun izleme dosyaları içerdiğini doğrulayın.

  5. İşiniz bittiğinde CPIC ve CCL izlemeyi kapatın.

    CommonCryptoLib izleme hakkında daha fazla bilgi için bkz . SAP Not 2491573 (SAP s-user gereklidir).

Kimliğe bürünme

Bu bölümde kimliğe bürünme sorunları için sorun giderme belirtileri ve çözüm adımları açıklanmaktadır.

Belirti: GatewayInfo[date]'a bakarken .log aşağıdakine benzer bir girdi bulursunuz: DOMAIN\User kullanıcısının kimliğine bürünmek üzere (IsAuthenticated: True, ImpersonationLevel: Kimliğe Bürünme). ImpersonationLevel değeri Kimliğe Bürünme'den farklıysa, kimliğe bürünme düzgün gerçekleşmez.

Çözüm: Ağ geçidi makinesinde ağ geçidi hizmet hesabına yerel ilke hakları verme makalesinde bulunan adımları izleyin. Yapılandırmayı değiştirdikten sonra ağ geçidi hizmetini yeniden başlatın.

Doğrulama: Raporu yenileyin veya oluşturun ve GatewayInfo[date].log toplayın. En son GatewayInfo günlük dosyasını açın ve şu dizeyi yeniden denetleyin: Kimliğe BürünmeLevel değerinin Kimliğe Bürünme ile eşleştiğinden emin olmak için DOMAIN\User kullanıcısının kimliğine bürünme hakkında (IsAuthenticated: True, ImpersonationLevel: Impersonation).

Temsilci

Temsilci seçme sorunları genellikle Power BI hizmeti genel hatalar olarak görünür. Temsilci seçmenin sorun olup olmadığını belirlemek için Wireshark izlemelerini toplamak ve Kerberos'ı filtre olarak kullanmak yararlı olur. Kerberos hataları başvurusu için blog gönderisine bakın. Bu bölümün geri kalanında, temsilci seçme sorunları için sorun giderme belirtileri ve çözüm adımları açıklanmaktadır.

Belirti: Power BI hizmeti aşağıdaki ekran görüntüsüne benzer şekilde beklenmeyen bir hatayla karşılaşabilirsiniz. GatewayInfo[date].log clientPipelineId için Ado sorgu yürütme denemesi sırasında [DM.GatewayCore] özel durum alındığını ve [0D_NW_CHANN] içeri aktarma işleminin dışarı aktarmayla eşleşmediğini görürsünüz.

Screenshot of unhelpful error

Mashup[date].log GSS-API(maj) genel hatasını görürsünüz: Hiçbir kimlik bilgisi sağlanmadı.

CPIC izlemelerini (sec-Microsoft.Mashup*.trc) incelerseniz aşağıdakine benzer bir şey görürsünüz:

[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

Hata, Ağ Geçidi makinesinden sec-Microsoft.Mashup.Con-[].trc dosyasından çıkarılarak daha net hale gelir:

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

WireShark izlemelerine bakarsanız sorunu da görebilirsiniz.

Screenshot of tracing program showing an error

Not

KRB5KDC_ERR_PREAUTH_REQUIRED diğer hatalar güvenle yoksayılabilir.

Çözüm: Hizmet hesabına SPN SAP/BW5 eklemeniz gerekir. Ayrıntılı bilgi ve adımlar SAP belgelerinde bulunabilir.

WireShark izlemelerinde aşağıdaki hata KRB5KDC_ERR_BADOPTION gösterilen benzer, ancak aynı hatayla karşılaşamayabilirsiniz:

Screenshot of WireShark program showing a different error

Bu hata, SPN SAP/BW5'in bulunabileceğini gösterir, ancak bu hesabın, Ağ Geçidi hizmet hesabının Temsilci sekmesinde temsilci kimlik bilgilerini sunabileceği Hizmetlerde bulunmaz. Bu sorunu düzeltmek için ağ geçidi hizmet hesabını standart kerberos kısıtlanmış temsili için yapılandırma adımlarını izleyin.

Doğrulama: Doğru yapılandırma, ağ geçidi tarafından genel veya beklenmeyen hataların sunulmasını engeller. Hala hatalar görüyorsanız ağ geçidinin yapılandırmasını veya BW sunucusunun yapılandırmasını denetleyin.

Kimlik bilgileri hataları

Bu bölümde kimlik bilgileri hata sorunları için sorun giderme belirtileri ve çözüm adımları açıklanmaktadır. Temsilci seçmenin önceki bölümünde açıklandığı gibi Power BI hizmeti genel hatalar da görebilirsiniz.

Veri kaynağında (SAP BW) gördüğünüz belirtilere göre farklı çözümler vardır, bu nedenle ikisini de gözden geçireceğiz.

Belirti 1: BW Sunucusu'ndan sec-disp+work[].trc sectraces içinde aşağıdakine benzer izlemeler görürsünüz:

[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

Çözüm: Gerekirse ağ geçidi makinesinde kullanıcı eşleme yapılandırma parametrelerini ayarlamak için yapılandırma adımlarını tamamlayın. Microsoft Entra Bağlan zaten yapılandırılmış olsa bile bu adımları tamamlamanız gerekir.

Doğrulama: Raporu Power BI hizmeti başarıyla yükleyebilirsiniz. Başarılı olmazsa, belirti 2'deki adımlara bakın.

Belirti 2: BW Sunucusu'ndan sec-disp+work[].trc sectraces içinde aşağıdakine benzer izlemeler görürsünüz:

[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

Çözüm: Kullanıcı için Kerberos dış kimliğinin sectraces'in gösterdiğiyle eşleşip eşleşmediğini denetleyin.

  1. SAP Oturum Açma'ya tıklayın.
  2. SU01 işlemini kullanın.
  3. Kullanıcıyı düzenleyin.
  4. SNC sekmesine gidin, SNC adının günlüklerinizde gösterilen adla eşleştiğinden emin olun.

Doğrulama: Düzgün bir şekilde tamamlandığında, Power BI hizmeti raporları oluşturabilir ve yenileyebilirsiniz.

Şirket içi veri ağ geçidi ve DirectQuery hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın: