Dela via


Konfigurera Kerberos-begränsad delegering

Metoderna för enkel inloggning (SSO) varierar mellan program. Microsoft Entra-programproxy tillhandahåller Kerberos-begränsad delegering (KCD) som standard. I programproxy autentiserar en användare till ett privat program med hjälp av Kerberos.

I den här artikeln beskrivs hur du felsöker de vanligaste problemen i KCD-konfigurationen. Den innehåller diagnostiksteg som du kan vidta för mer komplexa implementeringar.

Den här artikeln gör följande antaganden:

  • Microsoft Entra applikationsproxy distribueras och har allmän åtkomst till icke-KCD-applikationer.

    Mer information finns i Komma igång med programproxy.

  • Ett publicerat program baseras på Internet Information Services (IIS) och Microsoft-implementeringen av Kerberos.

  • Server- och programvärdar finns i en enda Microsoft Entra-domän.

    Mer information om scenarier mellan domäner och skogar finns i vitboken Förstå Kerberos-begränsad delegering med programproxy.

  • Programmet publiceras i en Microsoft Entra-klientorganisation med förautentisering aktiverat. Användarna förväntas autentisera med hjälp av formulärbaserad autentisering.

    Omfattande klientautentiseringsscenarier beskrivs inte i den här artikeln.

Överväganden

I följande lista beskrivs grundläggande överväganden för KCD-konfiguration och användning med Microsoft Entra-programproxy:

  • Grundläggande felkonfigurationer eller allmänna misstag orsakar de flesta problem. Innan du börjar felsöka kontrollerar du alla krav i Använd KCD SSO med programproxy.

  • Anslutningsvärdar är inte begränsade till att endast kommunicera med en specifik lokal domänkontrollant (DC). Kontrollera den domänkontrollant som du använder eftersom den kan ändras.

  • Scenarier mellan domäner förlitar sig på hänvisningar som dirigerar en anslutningsvärd till domänkontrollanter som kan ligga utanför den lokala nätverksperimetern. I dessa fall är det lika viktigt att skicka trafik vidare till domänkontrollanter som representerar andra respektive domäner. Om du inte gör det misslyckas delegeringen.

  • Undvikande av aktiva IPS- eller IDS-enheter (Intrusion Detection System) mellan anslutningsvärdar och domänkontrollanter (DCs) på grund av interferens med RPC-trafik (Core Remote Procedure Call).

  • Testa delegering i ett enkelt scenario. Ju fler variabler du introducerar i ett scenario, desto mer komplex konfiguration och felsökning är. Begränsa testningen till en enda kontakt för att spara tid. Lägg till fler anslutningar när problemet har lösts.

  • Miljöfaktorer kan bidra till orsaken till ett problem. Minimera arkitekturen så mycket som möjligt under testningen för att undvika dessa faktorer. Till exempel är felkonfigurerade interna åtkomstkontrollistor (ACL: er) vanliga. Skicka om möjligt all trafik från en anslutning direkt till domänkontrollanterna och backend-applikationen.

  • Den bästa platsen att placera kontakter är så nära deras mål som möjligt. En brandvägg som är i linje när du testar anslutningen lägger till onödig komplexitet och kan förlänga dina felsökningar.

  • Vad tyder på ett KCD-problem? Flera vanliga fel tyder på att KCD SSO inte fungerar. De första tecknen på ett problem visas i webbläsaren.

    Båda följande skärmbilder visar samma symptom på SSO-fel: Användaråtkomst till programmet nekas.

    Skärmbild som visar ett exempel på ett felaktigt KCD-konfigurationsfel med felet Felaktig Kerberos-begränsad delegering markerad.

    Skärmbild som visar ett exempel på auktoriseringsfel på grund av saknade behörigheter.

Felsökning

Du kan felsöka KCD-problem i tre steg. Kontrollera dessa delar av KCD-processen i följande ordning:

  • Klientförautentisering
  • Delegeringstjänsten
  • Målapplikationen

Klientförautentisering

Klientpreauthentication refererar till en extern användare som autentiserar i ett program via en webbläsare. Möjligheten att förautentisera till Microsoft Entra-ID är nödvändig för att KCD SSO ska fungera.

Testa klientens förautentisering först och lös eventuella problem. Förautentiseringssteget är inte relaterat till KCD eller det publicerade programmet. Det är enkelt att korrigera eventuella avvikelser genom att kontrollera att ämneskontot finns i Microsoft Entra-ID. Kontrollera att programmet inte är otillgängligt eller blockerat. Felsvaret i webbläsaren är vanligtvis tillräckligt beskrivande för att förklara orsaken.

Delegeringstjänsten

Kerberos-delegeringstjänsten är den privata nätverksanslutningen som hämtar en Kerberos-tjänstbiljett från ett Kerberos Key Distribution Center (KDC). Appanvändaren autentiserar med programmet via biljetten.

Extern kommunikation mellan klienten och Azure-klientdelen påverkar inte begränsad delegering. Dessa meddelanden säkerställer endast att KCD fungerar. Programproxytjänsten får ett giltigt användar-ID som får en Kerberos-biljett. Utan det här ID:t kan KCD inte ske och SSO misslyckas.

Webbläsarfelmeddelanden ger användbar information om varför inloggningen misslyckas. Registrera värdena för TransactionID och Timestamp i svaret på programinloggning. Informationen hjälper till att korrelera beteendet med händelser som visas i programproxyhändelseloggen.

Skärmbild som visar ett felmeddelande om konfiguration av Kerberos-begränsad delegering.

Motsvarande poster i händelseloggen är händelse-ID:t 13019 eller 12027. Om du vill visa händelseloggarna för anslutningen går du till Program- och tjänstloggar>Microsoft>Microsoft Entra privat nätverk>Anslutningsadministratör>Admin.

Så här felsöker du ett problem med begränsad delegering:

  1. I ditt interna DNS-system (Domain Name System) för programadressen ska du använda en A-record, inte en CNAME-record.
  2. Kontrollera att kontaktnoden har konfigurerats med behörighet att delegera till tjänstehuvudnamnet (SPN) för målkontot. Kontrollera att Använd alla autentiseringsprotokoll har valts. Mer information finns i SSO-konfiguration.
  3. Kontrollera att endast en instans av SPN finns i Microsoft Entra-ID. Om du vill verifiera endast ett SPN kör du i en kommandotolk på valfri värd i domänen setspn -x.
  4. Kontrollera att en domänprincip som begränsar den maximala storleken på utfärdade Kerberos-token tillämpas. Principen hindrar anslutningsappen från att hämta en token om tokenstorleken överskrider ett angivet maxvärde.
  5. Att köra en nätverksspårning som samlar in utbyten mellan anslutningsvärden och en domän KCD är det näst bästa steget för att få mer information om problemet. Mer information finns i det djupgående faktabladet Felsöka Microsoft Entra-programproxyn.

Om biljetten fungerar korrekt visar loggarna troligen en händelse som anger att autentiseringen misslyckades eftersom programmet returnerade ett 401-fel. Den här händelsen anger att målapplikationen avvisade biljetten. Gå till nästa steg i felsökningen.

Programmet

Målprogrammet bearbetar Kerberos-biljetten som tillhandahålls av anslutningsappen. I det här skedet innehåller anslutningsappen en Kerberos-tjänstbiljett som en rubrik i den första programbegäran till serverdelen.

Så här felsöker du ett programproblem:

  1. Kontrollera att programmet är tillgängligt. Logga in direkt från webbläsaren på anslutningsappens värd med hjälp av den interna URL som definierats i Azure-portalen. Om inloggningen lyckas är programmet tillgängligt.

  2. Kontrollera om webbläsaren och programmet använder Kerberos för autentisering. Från värdanslutningen använder du Internet Explorer's DevTools (tryck F12) eller Fiddler för att komma åt programmet via det interna URL:et. Leta efter "Negotiate" eller "Kerberos" i auktoriseringsrubrikerna på webben i applikationens svar.

    Webbläsarsvaret på programmet innehåller en Kerberos-blob som börjar med YIIoch som bekräftar att Kerberos körs. Däremot börjar ett svar från Microsoft NT LAN Manager (NTLM) alltid med TlRMTVNTUAAB. När det här svaret avkodas från Base64 läser det NTLM Security Support Provider (NTLMSSP). Om blobarna börjar med TlRMTVNTUAABär Kerberos inte tillgängligt. Om den inte gör det är Kerberos sannolikt tillgängligt.

    Anteckning

    Om du använder Fiddler måste du tillfälligt inaktivera utökat skydd för programkonfigurationen i IIS.

    Skärmbild som visar en dialogruta för nätverksgranskning i webbläsaren.

    Bloben i den här skärmbilden börjar inte med TIRMTVNTUAAB. Så i det här exemplet är Kerberos tillgängligt och Kerberos-bloben börjar inte med YII.

  3. Ta tillfälligt bort NTLM från leverantörslistan på IIS-webbplatsen. Få åtkomst till appen direkt från Internet Explorer på värddatorn. NTLM finns inte längre i providerlistan, så du kan bara komma åt programmet med hjälp av Kerberos. Om åtkomsten misslyckas visas ett problem med programmets konfiguration. Programmet bearbetar inte Kerberos-autentisering.

  4. Om Kerberos inte är tillgängligt kontrollerar du programmets autentiseringsinställningar i IIS. Kontrollera att Negotiate visas överst och att NTLM ligger precis under det. Om du ser Förhandla inte, Kerberos eller Negotiate, eller PKU2U, fortsätt endast om Kerberos fungerar.

    Skärmbild som visar Windows-autentiseringsprovidrar.

  5. Med Kerberos och NTLM på plats inaktiverar du tillfälligt förautentisering för programmet i portalen. Försök att komma åt programmet i en webbläsare med hjälp av den externa URL:en. Du uppmanas att autentisera. Använd samma konto som du använde i ett tidigare steg. Om du inte kan autentisera och logga in finns det ett problem med serverdelsprogrammet, inte med KCD.

  6. Återaktivera förautentisering i portalen. Autentisera via Azure genom att försöka ansluta till programmet via dess externa URL. Om SSO (Single Sign-On) misslyckas visas felmeddelandet "förbjudet" i webbläsaren och händelse-ID 13022 i loggen:

    Microsoft Entra private network connector can't authenticate the user because the backend server responds to Kerberos authentication attempts with an HTTP 401 error.

    Skärmbild som visar ett felmeddelande om att HTTP 401 är förbjudet.

  7. Kontrollera IIS-programmet. Kontrollera att den konfigurerade programpoolen och SPN är konfigurerade för att använda samma konto i Microsoft Entra-ID. I IIS går du till mappen enligt följande skärmbild:

    Skärmbild som visar en dialogruta för IIS-programkonfiguration.

    Kontrollera identiteten och kontrollera sedan att det här kontot har konfigurerats med SPN. Kör till exempel setspn –q http/spn.contoso.comi en kommandotolk .

    Skärmbild som visar kommandofönstret SetSPN.

  8. I portalen kontrollerar du det definierade SPN:et mot programinställningarna. Kontrollera att programmets apppool använder samma SPN som har angetts för Microsoft Entra-målkontot.

  9. I IIS väljer du alternativet Konfigurationsredigerare för programmet. Gå till system.webServer/security/authentication/windowsAuthentication. Kontrollera att värdet för UseAppPoolCredentials är Sant.

    Skärmbild som visar autentiseringsalternativet för IIS-konfigurationsapppooler.

    Ändra värdet till Sant om det behövs. Ta bort alla cachelagrade Kerberos-biljetter från back-end-servern genom att köra följande kommando:

    Get-WmiObject Win32_LogonSession | Where-Object {$_.AuthenticationPackage -ne 'NTLM'} | ForEach-Object {klist.exe purge -li ([Convert]::ToString($_.LogonId, 16))}
    
  10. Om kernelläget är aktiverat förbättras Kerberos-åtgärderna. Men biljetten för den begärda tjänsten måste också dekrypteras med hjälp av datorkontot. Det här kontot kallas även det lokala systemet. Ange det här värdet till True för att bryta KCD när programmet finns på fler än en server i en servergrupp.

  11. Som en annan kontroll inaktiverar du utökat skydd. I vissa testscenarier bröt utökat skydd KCD när det aktiverades i specifika konfigurationer. I dessa fall publicerades ett program som en undermapp till standardwebbplatsen. Det här programmet är endast konfigurerat för anonym autentisering. Alla dialogrutor är inaktiva, utan någon tillgänglig valmöjlighet, vilket tyder på att underordnade objekt inte skulle ärva några aktiva inställningar. Vi rekommenderar att du testar, men glöm inte att återställa det här värdet till aktiverat om möjligt.

    Den här extra kontrollen säkerställer att du kan använda ditt publicerade program. Du kan generera fler anslutningar som också är konfigurerade för delegering. Mer information finns i den mer djupgående tekniska genomgången Felsökning av Microsoft Entra-programproxyn.

Om du fortfarande inte kan lösa problemet med programautentisering skapar du ett supportärende direkt i portalen.

Andra scenarier

Microsoft Entra-programproxy begär en Kerberos-biljett innan den skickar en begäran till ett program. Vissa program stöder inte den här metoden för autentisering. Dessa program har konfigurerats för att svara på mer konventionella autentiseringssteg. Den första begäran är anonym, vilket gör att programmet kan svara med de autentiseringstyper som det stöder via ett 401-fel. Du kan konfigurera den här typen av Kerberos-förhandling genom att slutföra stegen som beskrivs i Kerberos-begränsad delegering för enkel inloggning.

Multi-hop-autentisering används ofta när ett program är nivåindelat. Nivåerna innehåller en backend och en frontend. Båda nivåerna kräver autentisering. Du kan till exempel skapa ett nivåindelat program med hjälp av SQL Server Reporting Services. Mer information finns i Konfigurera Kerberos-begränsad delegering för proxysidor för webbregistrering.