Säkra API:er som används för API-anslutningsappar i Azure AD B2C
När du integrerar ett REST API i ett Azure AD B2C-användarflöde måste du skydda REST API-slutpunkten med autentisering. REST API-autentiseringen säkerställer att endast tjänster som har rätt autentiseringsuppgifter, till exempel Azure AD B2C, kan göra anrop till slutpunkten. I den här artikeln beskrivs hur du skyddar REST API.
Förutsättningar
Slutför stegen i guiden Lägg till en API-anslutning till en användarflödesguide för registrering.
Du kan skydda API-slutpunkten med hjälp av antingen grundläggande HTTP-autentisering eller HTTPS-klientcertifikatautentisering. I båda fallen anger du de autentiseringsuppgifter som Azure AD B2C använder när den anropar API-slutpunkten. API-slutpunkten kontrollerar sedan autentiseringsuppgifterna och utför auktoriseringsbeslut.
Grundläggande HTTP-autentisering
Grundläggande HTTP-autentisering definieras i RFC 2617. Grundläggande autentisering fungerar på följande sätt:
Azure AD B2C skickar en HTTP-begäran med klientens autentiseringsuppgifter (
username
ochpassword
) iAuthorization
rubriken.Autentiseringsuppgifterna formateras som den base64-kodade strängen
username:password
.Ditt API ansvarar sedan för att kontrollera dessa värden för att utföra andra auktoriseringsbeslut.
Följ dessa steg för att konfigurera en API-Anslut eller med grundläggande HTTP-autentisering:
- Logga in på Azure-portalen.
- Under Azure-tjänster väljer du Azure AD B2C eller söker efter och väljer Azure AD B2C.
- Välj API-anslutningsappar och välj sedan den API-Anslut eller som du vill konfigurera.
- Som Autentiseringstyp väljer du Grundläggande.
- Ange användarnamnet och lösenordet för rest-API-slutpunkten.
- Välj Spara.
Lägga till REST API-användarnamn och lösenordsprincipnycklar
Om du vill konfigurera en teknisk REST API-profil med grundläggande HTTP-autentisering skapar du följande kryptografiska nycklar för att lagra användarnamnet och lösenordet:
- Logga in på Azure-portalen.
- Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
- Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
- På sidan Översikt väljer du Identity Experience Framework.
- Välj Principnycklar och välj sedan Lägg till.
- För Alternativ väljer du Manuell.
- Som Namn skriver du RestApiUsername. Prefixet B2C_1A_ kan läggas till automatiskt.
- I rutan Hemlighet anger du REST API-användarnamnet.
- För Nyckelanvändning väljer du Kryptering.
- Välj Skapa.
- Välj Principnycklar igen.
- Markera Lägga till.
- För Alternativ väljer du Manuell.
- Som Namn skriver du RestApiPassword. Prefixet B2C_1A_ kan läggas till automatiskt.
- I rutan Hemlighet anger du REST API-lösenordet.
- För Nyckelanvändning väljer du Kryptering.
- Välj Skapa.
Konfigurera din tekniska REST API-profil så att den använder grundläggande HTTP-autentisering
När du har skapat nödvändiga nycklar konfigurerar du metadata för den tekniska REST API-profilen så att de refererar till autentiseringsuppgifterna.
- Öppna filnamnstilläggsprincipen i arbetskatalogen (TrustFrameworkExtensions.xml).
- Sök efter den tekniska REST API-profilen. Till exempel
REST-ValidateProfile
, ellerREST-GetProfile
. - Leta upp elementet
<Metadata>
. - Ändra AuthenticationType till
Basic
. - Ändra AllowInsecureAuthInProduction till
false
. - Omedelbart efter det avslutande
</Metadata>
elementet lägger du till följande XML-kodfragment:<CryptographicKeys> <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" /> <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" /> </CryptographicKeys>
Följande XML-kodfragment är ett exempel på en RESTful-teknisk profil som konfigurerats med grundläggande HTTP-autentisering:
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-GetProfile">
<DisplayName>Get user extended profile Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">Basic</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
<Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
</CryptographicKeys>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
HTTPS-klientcertifikatautentisering
Klientcertifikatautentisering är en ömsesidig certifikatbaserad autentisering, där klienten, Azure AD B2C, tillhandahåller sitt klientcertifikat till servern för att bevisa sin identitet. Detta händer som en del av SSL-handskakningen. Ditt API ansvarar för att verifiera att certifikaten tillhör en giltig klient, till exempel Azure AD B2C, och att utföra auktoriseringsbeslut. Klientcertifikatet är ett digitalt X.509-certifikat.
Viktigt!
I produktionsmiljöer måste certifikatet signeras av en certifikatutfärdare.
Skapa ett certifikat
Alternativ 1: Använd Azure Key Vault (rekommenderas)
Om du vill skapa ett certifikat kan du använda Azure Key Vault, som har alternativ för självsignerade certifikat och integreringar med certifikatutfärdare för signerade certifikat. Rekommenderade inställningar är:
- Ämne:
CN=<yourapiname>.<tenantname>.onmicrosoft.com
- Innehållstyp:
PKCS #12
- Lifetime Acton Type:
Email all contacts at a given percentage lifetime
ellerEmail all contacts a given number of days before expiry
- Nyckeltyp:
RSA
- Nyckelstorlek:
2048
- Exporterbar privat nyckel:
Yes
(för att kunna exportera.pfx
filen)
Du kan sedan exportera certifikatet.
Alternativ 2: Förbereda ett självsignerat certifikat med hjälp av PowerShell-modulen
Om du inte redan har ett certifikat kan du använda ett självsignerat certifikat. Ett självsignerat certifikat är ett säkerhetscertifikat som inte är signerat av en certifikatutfärdare (CA) och som inte tillhandahåller säkerhetsgarantierna för ett certifikat som signerats av en certifikatutfärdare.
I Windows använder du cmdleten New-SelfSignedCertificate i PowerShell för att generera ett certifikat.
Kör följande PowerShell-kommando för att generera ett självsignerat certifikat.
-Subject
Ändra argumentet efter behov för ditt program och Azure AD B2C-klientnamn, till exempelcontosowebapp.contoso.onmicrosoft.com
. Du kan också justera-NotAfter
datumet för att ange ett annat förfallodatum för certifikatet.New-SelfSignedCertificate ` -KeyExportPolicy Exportable ` -Subject "CN=yourappname.yourtenant.onmicrosoft.com" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -KeyUsage DigitalSignature ` -NotAfter (Get-Date).AddMonths(12) ` -CertStoreLocation "Cert:\CurrentUser\My"
På Windows-datorn söker du efter och väljer Hantera användarcertifikat
Under Certifikat – aktuell användare väljer du Personliga>certifikat>yourappname.yourtenant.onmicrosoft.com.
Välj certifikatet och välj sedan Åtgärd>alla uppgifter>Exportera.
Välj Nästa>Ja, exportera den privata nyckeln>Nästa.
Acceptera standardinställningarna för Exportera filformat och välj sedan Nästa.
Aktivera alternativet Lösenord , ange ett lösenord för certifikatet och välj sedan Nästa.
Om du vill ange en plats för att spara certifikatet väljer du Bläddra och navigerar till valfri katalog.
I fönstret Spara som anger du ett filnamn och väljer sedan Spara.
Välj Nästa>Slutför.
För att Azure AD B2C ska acceptera .pfx-fillösenordet måste lösenordet krypteras med alternativet TripleDES-SHA1 i exportverktyget för Windows Certificate Store, till skillnad från AES256-SHA256.
Konfigurera api-Anslut eller
Följ dessa steg för att konfigurera en API-Anslut eller med klientcertifikatautentisering:
- Logga in på Azure-portalen.
- Under Azure-tjänster väljer du Azure AD B2C.
- Välj API-anslutningsappar och välj sedan den API-Anslut eller som du vill konfigurera.
- Som Autentiseringstyp väljer du Certifikat.
- I rutan Ladda upp certifikat väljer du certifikatets .pfx-fil med en privat nyckel.
- I rutan Ange lösenord skriver du certifikatets lösenord.
- Välj Spara.
Fatta auktoriseringsbeslut
Ditt API måste implementera auktoriseringen baserat på skickade klientcertifikat för att skydda API-slutpunkterna. Information om Azure App Service och Azure Functions finns i Konfigurera ömsesidig TLS-autentisering för att lära dig hur du aktiverar och verifierar certifikatet från din API-kod. Du kan också använda Azure API Management som ett lager framför valfri API-tjänst för att kontrollera egenskaperna för klientcertifikatet mot önskade värden.
Förnya certifikat
Vi rekommenderar att du anger påminnelseaviseringar för när certifikatet upphör att gälla. Du måste generera ett nytt certifikat och upprepa stegen ovan när de använda certifikaten snart upphör att gälla. Om du vill "rulla" användningen av ett nytt certifikat kan API-tjänsten fortsätta att acceptera gamla och nya certifikat under en tillfällig tid medan det nya certifikatet distribueras.
Om du vill ladda upp ett nytt certifikat till en befintlig API-anslutningsapp väljer du API-anslutningsappen under API-anslutningsappar och klickar på Ladda upp nytt certifikat. Det senast uppladdade certifikatet, som inte har upphört att gälla och vars startdatum har passerat, används automatiskt av Azure AD B2C.
Lägga till en principnyckel för klientcertifikat
- Logga in på Azure-portalen.
- Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
- Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
- På sidan Översikt väljer du Identity Experience Framework.
- Välj Principnycklar och välj sedan Lägg till.
- I rutan Alternativ väljer du Ladda upp.
- I rutan Namn skriver du RestApiClientCertificate. Prefixet B2C_1A_ läggs till automatiskt.
- I rutan Filuppladdning väljer du certifikatets .pfx-fil med en privat nyckel.
- I rutan Lösenord skriver du certifikatets lösenord.
- Välj Skapa.
Konfigurera din tekniska REST API-profil för att använda klientcertifikatautentisering
När du har skapat den nödvändiga nyckeln konfigurerar du rest-API:ets tekniska profilmetadata så att de refererar till klientcertifikatet.
- Öppna filnamnstilläggsprincipen i arbetskatalogen (TrustFrameworkExtensions.xml).
- Sök efter den tekniska REST API-profilen. Till exempel
REST-ValidateProfile
, ellerREST-GetProfile
. - Leta upp elementet
<Metadata>
. - Ändra AuthenticationType till
ClientCertificate
. - Ändra AllowInsecureAuthInProduction till
false
. - Omedelbart efter det avslutande
</Metadata>
elementet lägger du till följande XML-kodfragment:<CryptographicKeys> <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" /> </CryptographicKeys>
Följande XML-kodfragment är ett exempel på en teknisk RESTful-profil som konfigurerats med ett HTTP-klientcertifikat:
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-GetProfile">
<DisplayName>Get user extended profile Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">ClientCertificate</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
</CryptographicKeys>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
OAuth2-ägarautentisering
Ägartokenautentisering definieras i OAuth2.0 Authorization Framework: Bearer Token Usage (RFC 6750). Vid autentisering med ägartoken skickar Azure AD B2C en HTTP-begäran med en token i auktoriseringshuvudet.
Authorization: Bearer <token>
En ägartoken är en täckande sträng. Det kan vara en JWT-åtkomsttoken eller en sträng som REST API förväntar sig att Azure AD B2C ska skicka i auktoriseringshuvudet. Azure AD B2C stöder följande typer:
- Ägartoken. För att kunna skicka ägartoken i den vilande tekniska profilen måste din princip först hämta ägartoken och sedan använda den i den tekniska RESTful-profilen.
- Statisk ägartoken. Använd den här metoden när rest-API:et utfärdar en långsiktig åtkomsttoken. Om du vill använda en statisk ägartoken skapar du en principnyckel och gör en referens från den tekniska RESTful-profilen till din principnyckel.
Använda OAuth2 Bearer
Följande steg visar hur du använder klientautentiseringsuppgifter för att hämta en ägartoken och skicka den till auktoriseringshuvudet för REST API-anropen.
Definiera ett anspråk för att lagra ägartoken
Ett anspråk ger tillfällig lagring av data under en Azure AD B2C-principkörning. Anspråksschemat är den plats där du deklarerar dina anspråk. Åtkomsttoken måste lagras i ett anspråk för att kunna användas senare.
- Öppna tilläggsfilen för principen. Exempel:
SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
- Sök efter elementet BuildingBlocks . Om elementet inte finns lägger du till det.
- Leta upp elementet ClaimsSchema . Om elementet inte finns lägger du till det.
- Lägg till följande anspråk i elementet ClaimsSchema .
<ClaimType Id="bearerToken">
<DisplayName>Bearer token</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="grant_type">
<DisplayName>Grant type</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="scope">
<DisplayName>scope</DisplayName>
<DataType>string</DataType>
</ClaimType>
Hämta en åtkomsttoken
Du kan hämta en åtkomsttoken på ett av flera sätt, för från en federerad identitetsprovider, genom att anropa ett REST-API som returnerar en åtkomsttoken, med hjälp av ett ROPC-flöde eller genom att använda flödet för klientautentiseringsuppgifter. Flödet för klientautentiseringsuppgifter används ofta för server-till-server-interaktioner som måste köras i bakgrunden, utan omedelbar interaktion med en användare.
Skaffa en Microsoft Entra-åtkomsttoken
I följande exempel används en teknisk REST API-profil för att göra en begäran till Microsoft Entra-tokenslutpunkten med klientautentiseringsuppgifterna som skickas som grundläggande HTTP-autentisering. Mer information finns i Microsofts identitetsplattform och OAuth 2.0-klientens autentiseringsuppgifter.
Innan den tekniska profilen kan interagera med Microsoft Entra-ID för att hämta en åtkomsttoken måste du registrera ett program. Azure AD B2C förlitar sig på Microsoft Entra-plattformen. Du kan skapa appen i din Azure AD B2C-klientorganisation eller i valfri Microsoft Entra-klientorganisation som du hanterar. Så här registrerar du ett program:
- Logga in på Azure-portalen.
- Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
- I den vänstra menyn väljer du Microsoft Entra-ID. Eller välj Alla tjänster och sök efter och välj Microsoft Entra-ID.
- Välj Appregistreringar och välj sedan Ny registrering.
- Ange ett namn för programmet. Till exempel Client_Credentials_Auth_app.
- Under Kontotyper som stöds väljer du Endast Konton i den här organisationskatalogen.
- Välj Registrera.
- Registrera program-ID (klient)-ID:t.
För ett flöde för klientautentiseringsuppgifter måste du skapa en programhemlighet. Klienthemligheten kallas även för ett programlösenord. Ditt program använder hemligheten för att hämta en åtkomsttoken.
- På sidan Microsoft Entra ID – Appregistreringar väljer du det program som du skapade, till exempel Client_Credentials_Auth_app.
- I den vänstra menyn går du till Hantera och väljer Certifikathemligheter&.
- Välj Ny klienthemlighet.
- Ange en beskrivning av klienthemligheten i rutan Beskrivning . Till exempel clientsecret1.
- Under Upphör att gälla väljer du en varaktighet för vilken hemligheten är giltig och väljer sedan Lägg till.
- Registrera hemlighetens värde för användning i klientprogramkoden. Det här hemliga värdet visas aldrig igen när du har lämnat den här sidan. Du använder det här värdet som programhemlighet i programmets kod.
Skapa Azure AD B2C-principnycklar
Du måste lagra klient-ID:t och det klienthemlighetsvärde som du tidigare registrerade i din Azure AD B2C-klientorganisation.
- Logga in på Azure-portalen.
- Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
- Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
- På sidan Översikt väljer du Identity Experience Framework.
- Välj Principnycklar och välj sedan Lägg till.
- För Alternativ väljer du
Manual
. - Ange ett Namn för principnyckeln,
SecureRESTClientId
. PrefixetB2C_1A_
läggs automatiskt till i namnet på din nyckel. - I Hemlighet anger du ditt klient-ID som du registrerade tidigare.
- För Nyckelanvändning väljer du
Signature
. - Välj Skapa.
- Skapa en annan principnyckel med följande inställningar:
- Namn:
SecureRESTClientSecret
. - Hemlighet: ange din klienthemlighet som du tidigare har registrerat
- Namn:
För ServiceUrl ersätter du namnet på din klientorganisation med namnet på din Microsoft Entra-klientorganisation. Se referensen för restful-teknisk profil för alla tillgängliga alternativ.
<TechnicalProfile Id="REST-AcquireAccessToken">
<DisplayName></DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://login.microsoftonline.com/your-tenant-name.onmicrosoft.com/oauth2/v2.0/token</Item>
<Item Key="AuthenticationType">Basic</Item>
<Item Key="SendClaimsIn">Form</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_SecureRESTClientId" />
<Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_SecureRESTClientSecret" />
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="client_credentials" AlwaysUseDefaultValue="true" />
<InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="bearerToken" PartnerClaimType="access_token" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
Kommentar
Om du använder anspråken grant_type
eller scope
i andra tekniska profiler rekommenderar vi att de även anger DefaultValue
och använder AlwaysUseDefaultValue="true"
för att undvika potentiella konflikter i bindningen mot det felaktiga värdet.
Ändra den tekniska REST-profilen så att den använder ägartokenautentisering
Om du vill stödja ägartokenautentisering i din anpassade princip ändrar du den tekniska REST API-profilen med hjälp av följande steg:
Öppna principfilen TrustFrameworkExtensions.xml-tillägg i arbetskatalogen.
Sök efter noden
<TechnicalProfile>
som innehållerId="REST-API-SignUp"
.Leta upp elementet
<Metadata>
.Ändra AuthenticationType till Bearer enligt följande:
<Item Key="AuthenticationType">Bearer</Item>
Ändra eller lägg till UseClaimAsBearerToken i bearerToken på följande sätt. BearerToken är namnet på anspråket som ägartoken hämtas från (utdataanspråket från
REST-AcquireAccessToken
).<Item Key="UseClaimAsBearerToken">bearerToken</Item>
Lägg till anspråket från föregående steg som ett indataanspråk:
<InputClaim ClaimTypeReferenceId="bearerToken"/>
När du har uppdaterat principen bör den tekniska profilen se ut ungefär som följande XML-kod:
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-GetProfile">
<DisplayName>Get user extended profile Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">Bearer</Item>
<Item Key="UseClaimAsBearerToken">bearerToken</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="bearerToken"/>
</InputClaims>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Anropa den tekniska REST-profilen
Om du vill anropa den REST-GetProfile
tekniska profilen måste du först skaffa en Microsoft Entra-åtkomsttoken med hjälp av den REST-AcquireAccessToken
tekniska profilen. I följande exempel visas hur du anropar den REST-GetProfile
tekniska profilen från en teknisk valideringsprofil:
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
<ValidationTechnicalProfile ReferenceId="REST-GetProfile" />
</ValidationTechnicalProfiles>
I följande exempel visas hur du anropar den REST-GetProfile
tekniska profilen från en användarresa eller en underresa:
<OrchestrationSteps>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="REST-AcquireAccessTokens" TechnicalProfileReferenceId="REST-AcquireAccessToken" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="REST-GetProfile" TechnicalProfileReferenceId="REST-GetProfile" />
</ClaimsExchanges>
</OrchestrationStep>
</OrchestrationSteps>
Använda en statisk OAuth2-ägare
Lägg till principnyckeln för OAuth2-ägartoken
Om du vill konfigurera en teknisk REST API-profil med en OAuth2-ägartoken hämtar du en åtkomsttoken från REST API-ägaren. Skapa sedan följande kryptografiska nyckel för att lagra ägartoken.
- Logga in på Azure-portalen.
- Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
- Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
- På sidan Översikt väljer du Identity Experience Framework.
- Välj Principnycklar och välj sedan Lägg till.
- För Alternativ väljer du
Manual
. - Ange ett Namn för principnyckeln. Exempel:
RestApiBearerToken
PrefixetB2C_1A_
läggs automatiskt till i namnet på din nyckel. - I Hemlighet anger du din klienthemlighet som du tidigare har registrerat.
- För Nyckelanvändning väljer du
Encryption
. - Välj Skapa.
Konfigurera din tekniska REST API-profil så att den använder principnyckeln för ägartoken
När du har skapat den nödvändiga nyckeln konfigurerar du rest-API:ets tekniska profilmetadata så att den refererar till ägartoken.
- Öppna filnamnstilläggsprincipen i arbetskatalogen (TrustFrameworkExtensions.xml).
- Sök efter den tekniska REST API-profilen. Till exempel
REST-ValidateProfile
, ellerREST-GetProfile
. - Leta upp elementet
<Metadata>
. - Ändra AuthenticationType till
Bearer
. - Ändra AllowInsecureAuthInProduction till
false
. - Omedelbart efter det avslutande
</Metadata>
elementet lägger du till följande XML-kodfragment:<CryptographicKeys> <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" /> </CryptographicKeys>
Följande XML-kodfragment är ett exempel på en teknisk RESTful-profil som konfigurerats med ägartokenautentisering:
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-GetProfile">
<DisplayName>Get user extended profile Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">Bearer</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
</CryptographicKeys>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Lägg till referensen för den tekniska verifieringsprofilen till den tekniska registreringsprofilen, som anropar REST-AcquireAccessToken
. Det här beteendet innebär att Azure AD B2C går vidare för att skapa kontot i katalogen först efter valideringen.
Till exempel:
```XML
<ValidationTechnicalProfiles>
....
<ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
....
</ValidationTechnicalProfiles>
API-nyckelautentisering
Vissa tjänster använder en "API-nyckel"-mekanism för att dölja åtkomsten till dina HTTP-slutpunkter under utvecklingen genom att kräva att anroparen tar med en unik nyckel som HTTP-huvud eller HTTP-frågeparameter. För Azure Functions kan du göra detta genom att inkludera code
som en frågeparameter i slutpunkts-URL:en för API-anslutningsappen. Till exempel https://contoso.azurewebsites.net/api/endpoint
?code=0123456789
).
Det här är inte en mekanism som ska användas ensam i produktion. Därför krävs alltid konfiguration för grundläggande autentisering eller certifikatautentisering. Om du inte vill implementera någon autentiseringsmetod (rekommenderas inte) i utvecklingssyfte kan du välja "grundläggande" autentisering i API-anslutningskonfigurationen och använda tillfälliga värden för username
och password
som ditt API kan bortse från när du implementerar korrekt auktorisering.
API-nyckeln är en unik identifierare som används för att autentisera en användare för att få åtkomst till en REST API-slutpunkt. Nyckeln skickas i ett anpassat HTTP-huvud. Azure Functions HTTP-utlösaren använder x-functions-key
till exempel HTTP-huvudet för att identifiera beställaren.
Lägga till API-nyckelprincipnycklar
Om du vill konfigurera en teknisk REST API-profil med API-nyckelautentisering skapar du följande kryptografiska nyckel för att lagra API-nyckeln:
- Logga in på Azure-portalen.
- Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
- Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
- På sidan Översikt väljer du Identity Experience Framework.
- Välj Principnycklar och välj sedan Lägg till.
- För Alternativ väljer du Manuell.
- Som Namn skriver du RestApiKey. Prefixet B2C_1A_ kan läggas till automatiskt.
- I rutan Hemlighet anger du REST API-nyckeln.
- För Nyckelanvändning väljer du Kryptering.
- Välj Skapa.
Konfigurera din tekniska REST API-profil så att den använder API-nyckelautentisering
När du har skapat den nödvändiga nyckeln konfigurerar du rest-API:ets tekniska profilmetadata så att de refererar till autentiseringsuppgifterna.
- Öppna filnamnstilläggsprincipen i arbetskatalogen (TrustFrameworkExtensions.xml).
- Sök efter den tekniska REST API-profilen. Till exempel
REST-ValidateProfile
, ellerREST-GetProfile
. - Leta upp elementet
<Metadata>
. - Ändra AuthenticationType till
ApiKeyHeader
. - Ändra AllowInsecureAuthInProduction till
false
. - Omedelbart efter det avslutande
</Metadata>
elementet lägger du till följande XML-kodfragment:<CryptographicKeys> <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" /> </CryptographicKeys>
ID :t för den kryptografiska nyckeln definierar HTTP-huvudet. I det här exemplet skickas API-nyckeln som x-functions-key.
Följande XML-kodfragment är ett exempel på en RESTful-teknisk profil som konfigurerats för att anropa en Azure-funktion med API-nyckelautentisering:
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-GetProfile">
<DisplayName>Get user extended profile Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">ApiKeyHeader</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
</CryptographicKeys>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Nästa steg
- Kom igång med våra exempel.
- Läs mer om restful-elementet för teknisk profil i referensen för anpassad princip.