Felsöka ditt anpassade autentiseringstillägg
Med autentiseringshändelser och anpassade anspråksproviders kan du anpassa autentiseringsupplevelsen för Microsoft Entra genom att integrera med externa system. Du kan till exempel skapa ett API för en anpassad anspråksprovider och konfigurera en OpenID Connect-app eller EN SAML-app för att ta emot token med anspråk från ett externt arkiv.
Felbeteende
När ett API-anrop misslyckas är felbeteendet följande:
- För OpenId Connect-appar – Microsoft Entra-ID omdirigerar användaren tillbaka till klientprogrammet med ett fel. En token har inte präglats.
- För SAML-appar – Microsoft Entra-ID visar användaren en felskärm i autentiseringsupplevelsen. Användaren omdirigeras inte tillbaka till klientprogrammet.
Felkoden som skickas tillbaka till programmet eller användaren är allmän. Om du vill felsöka kontrollerar du inloggningsloggarna efter felkoderna.
Loggning
För att kunna felsöka problem med rest-API-slutpunkten för din anpassade anspråksprovider måste REST-API:et hantera loggning. Azure Functions och andra API-utvecklingsplattformar tillhandahåller djupgående loggningslösningar. Använd dessa lösningar för att få detaljerad information om api:ernas beteende och felsöka API-logiken.
Inloggningsloggar för Microsoft Entra
Dricks
Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.
Du kan också använda Inloggningsloggar för Microsoft Entra utöver dina REST API-loggar och vara värd för lösningar för miljödiagnostik. Med microsoft Entra-inloggningsloggar kan du hitta fel som kan påverka användarnas inloggningar. Inloggningsloggarna för Microsoft Entra innehåller information om HTTP-status, felkod, körningstid och antal återförsök som inträffade som API:et anropades av Microsoft Entra-ID.
Microsoft Entra-inloggningsloggar integreras också med Azure Monitor. Du kan konfigurera aviseringar och övervakning, visualisera data och integrera med SIEM-verktyg (säkerhetsinformation och händelsehantering). Du kan till exempel konfigurera meddelanden om antalet fel överskrider ett visst tröskelvärde som du väljer.
Så här kommer du åt inloggningsloggarna för Microsoft Entra:
Logga in på administrationscentret för Microsoft Entra som minst molnprogramadministratör.
Bläddra till Identity>Applications Enterprise-program.>
Välj Inloggningsloggar och välj sedan den senaste inloggningsloggen.
Mer information finns på fliken Autentiseringshändelser . Information om REST API-anropet för det anpassade autentiseringstillägget visas, inklusive eventuella felkoder.
Referens för felkoder
Använd följande tabell för att diagnostisera en felkod.
Felkod | Felnamn | beskrivning |
---|---|---|
1003000 | EventHandlerUnexpectedError | Ett oväntat fel uppstod vid bearbetning av en händelsehanterare. |
1003001 | CustomExtenstionUnexpectedError | Ett oväntat fel uppstod när ett API för anpassat tillägg anropades. |
1003002 | CustomExtensionInvalidHTTPStatus | API:et för anpassat tillägg returnerade en ogiltig HTTP-statuskod. Kontrollera att API:et returnerar en godkänd statuskod som definierats för den anpassade tilläggstypen. |
1003003 | CustomExtensionInvalidResponseBody | Det gick inte att parsa det anpassade tilläggets svarstext. Kontrollera att API-svarstexten är i ett acceptabelt schema för den anpassade tilläggstypen. |
1003004 | CustomExtensionThrottlingError | Det finns för många anpassade tilläggsbegäranden. Det här undantaget utlöses för API-anrop för anpassade tillägg när begränsningsgränser nås. |
1003005 | CustomExtensionTimedOut | Det anpassade tillägget svarade inte inom den tillåtna tidsgränsen. Kontrollera att DITT API svarar inom den konfigurerade tidsgränsen för det anpassade tillägget. Det kan också indikera att åtkomsttoken är ogiltig. Följ stegen för att anropa rest-API:et direkt. |
1003006 | CustomExtensionInvalidResponseContentType | Det anpassade tilläggets svarsinnehållstyp är inte "application/json". |
1003007 | CustomExtensionNullClaimsResponse | API:et för anpassat tillägg svarade med en null-anspråkspåse. |
1003008 | CustomExtensionInvalidResponseApiSchemaVersion | API:et för anpassat tillägg svarade inte med samma apiSchemaVersion som det anropades för. |
1003009 | CustomExtensionEmptyResponse | Api-svarstexten för det anpassade tillägget var null när det inte förväntades. |
1003010 | CustomExtensionInvalidNumberOfActions | API-svaret för anpassat tillägg innehöll ett annat antal åtgärder än de som stöds för den anpassade tilläggstypen. |
1003011 | CustomExtensionNotFound | Det gick inte att hitta det anpassade tillägget som är associerat med en händelselyssnare. |
1003012 | CustomExtensionInvalidActionType | Det anpassade tillägget returnerade en ogiltig åtgärdstyp som definierats för den anpassade tilläggstypen. |
1003014 | CustomExtensionIncorrectResourceIdFormat | Egenskapen identifierUris i manifestet för programregistreringen för det anpassade tillägget ska vara i formatet "api://{fullständigt domännamn}/{appid}. |
1003015 | CustomExtensionDomainNameDoesNotMatch | TargetUrl och resourceId för det anpassade tillägget ska ha samma fullständigt kvalificerade domännamn. |
1003016 | CustomExtensionResourceServicePrincipalNotFound | AppId för det anpassade tillägget resourceId ska motsvara ett verkligt huvudnamn för tjänsten i klientorganisationen. |
1003017 | CustomExtensionClientServicePrincipalNotFound | Det gick inte att hitta resurstjänstens huvudnamn för det anpassade tillägget i klientorganisationen. |
1003018 | CustomExtensionClientServiceDisabled | Resurstjänstens huvudnamn för det anpassade tillägget är inaktiverat i den här klientorganisationen. |
1003019 | CustomExtensionResourceServicePrincipalDisabled | Resurstjänstens huvudnamn för det anpassade tillägget är inaktiverat i den här klientorganisationen. |
1003020 | CustomExtensionIncorrectTargetUrlFormat | Mål-URL:en är i ett felaktigt format. Det måste vara en giltig URL som börjar med https. |
1003021 | CustomExtensionPermissionNotGrantedToServicePrincipal | Tjänstens huvudnamn har inte administratörsmedgivande för approllen Microsoft Graph CustomAuthenticationExtensions.Receive.Payload (även kallat programbehörighet) som krävs för att appen ska kunna ta emot HTTP-begäranden för anpassat autentiseringstillägg. |
1003022 | CustomExtensionMsGraphServicePrincipalDisabledOrNotFound | MS Graph-tjänstens huvudnamn är inaktiverat eller hittades inte i den här klientorganisationen. |
1003023 | CustomExtensionBlocked | Den slutpunkt som används för det anpassade tillägget blockeras av tjänsten. |
1003024 | CustomExtensionResponseSizeExceededed | Svarsstorleken för anpassade tillägg överskred den maximala gränsen. |
1003025 | CustomExtensionResponseClaimsSizeExceededed | Den totala storleken på anspråk i det anpassade tilläggssvaret överskred den maximala gränsen. |
1003026 | CustomExtensionNullOrEmptyClaimKeyNotSupported | API:et för anpassat tillägg svarade med anspråk som innehåller null- eller tom nyckel" |
1003027 | CustomExtensionConnectionError | Det gick inte att ansluta till API:et för anpassat tillägg. |
Anropa rest-API:et direkt
Rest-API:et skyddas av en Microsoft Entra-åtkomsttoken. Du kan testa ditt API genom att;
- Hämta en åtkomsttoken med en programregistrering som är associerad med de anpassade autentiseringstilläggen
- Testa ditt API lokalt med hjälp av ett API-testverktyg.
För lokal utveckling och testning öppnar du local.settings.json och ersätter koden med följande JSON:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "AzureWebJobsSecretStorageType": "files", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "AuthenticationEvents__BypassTokenValidation" : false } }
Kommentar
Om du använde NuGet-paketet Microsoft.Azure.WebJobs.Extensions.AuthenticationEvents måste du ange
"AuthenticationEvents__BypassTokenValidation" : true
för lokala teständamål.Använd det API-testverktyg du föredrar, skapa en ny HTTP-begäran och ange HTTP-metoden till
POST
.Använd följande JSON-brödtext som imiterar den begäran som Microsoft Entra-ID skickar till rest-API:et.
{ "type": "microsoft.graph.authenticationEvent.tokenIssuanceStart", "source": "/tenants/aaaabbbb-0000-cccc-1111-dddd2222eeee/applications/00001111-aaaa-2222-bbbb-3333cccc4444", "data": { "@odata.type": "microsoft.graph.onTokenIssuanceStartCalloutData", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "authenticationEventListenerId": "11112222-bbbb-3333-cccc-4444dddd5555", "customAuthenticationExtensionId": "22223333-cccc-4444-dddd-5555eeee6666", "authenticationContext": { "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd", "client": { "ip": "127.0.0.1", "locale": "en-us", "market": "en-us" }, "protocol": "OAUTH2.0", "clientServicePrincipal": { "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "appDisplayName": "My Test application", "displayName": "My Test application" }, "resourceServicePrincipal": { "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "appDisplayName": "My Test application", "displayName": "My Test application" }, "user": { "companyName": "Casey Jensen", "createdDateTime": "2023-08-16T00:00:00Z", "displayName": "Casey Jensen", "givenName": "Casey", "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee", "mail": "casey@contoso.com", "onPremisesSamAccountName": "Casey Jensen", "onPremisesSecurityIdentifier": "<Enter Security Identifier>", "onPremisesUserPrincipalName": "Casey Jensen", "preferredLanguage": "en-us", "surname": "Jensen", "userPrincipalName": "casey@contoso.com", "userType": "Member" } } } }
Dricks
Om du använder en åtkomsttoken som hämtats från Microsoft Entra-ID väljer du Auktorisering och väljer sedan Ägartoken och klistrar sedan in den åtkomsttoken som du fick från Microsoft Entra-ID.
Välj Skicka och du bör få ett JSON-svar som liknar följande:
{ "data": { "@odata.type": "microsoft.graph.onTokenIssuanceStartResponseData", "actions": [ { "@odata.type": "microsoft.graph.tokenIssuanceStart.provideClaimsForToken", "claims": { "customClaim1": "customClaimValue1", "customClaim2": [ "customClaimString1", "customClaimString2" ] } } ] } }
Vanliga prestandaförbättringar
Ett av de vanligaste problemen är att api:et för din anpassade anspråksprovider inte svarar inom tidsgränsen på två sekunder. Om rest-API:et inte svarar vid efterföljande återförsök misslyckas autentiseringen. Följ nedanstående förslag för att förbättra prestandan för rest-API:et:
- Om ditt API får åtkomst till underordnade API:er cachelagrade du den åtkomsttoken som används för att anropa dessa API:er, så en ny token behöver inte hämtas vid varje körning.
- Prestandaproblem är ofta relaterade till underordnade tjänster. Lägg till loggning, som registrerar processtiden för anrop till underordnade tjänster.
- Om du använder en molnleverantör som värd för ditt API använder du en värdplan som alltid håller API:et "varmt". För Azure Functions kan det vara antingen Premium-planen eller Dedikerad plan.
- Kör automatiserade integreringstester för dina autentiseringar. Du kan också använda API-testverktyg för att testa dina API-prestanda.