Share via


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 och password) i Authorization 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:

  1. Logga in på Azure-portalen.
  2. Under Azure-tjänster väljer du Azure AD B2C eller söker efter och väljer Azure AD B2C.
  3. Välj API-anslutningsappar och välj sedan den API-Anslut eller som du vill konfigurera.
  4. Som Autentiseringstyp väljer du Grundläggande.
  5. Ange användarnamnet och lösenordet för rest-API-slutpunkten. Providing basic authentication configuration for an API connector.
  6. 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:

  1. Logga in på Azure-portalen.
  2. 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.
  3. 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.
  4. På sidan Översikt väljer du Identity Experience Framework.
  5. Välj Principnycklar och välj sedan Lägg till.
  6. För Alternativ väljer du Manuell.
  7. Som Namn skriver du RestApiUsername. Prefixet B2C_1A_ kan läggas till automatiskt.
  8. I rutan Hemlighet anger du REST API-användarnamnet.
  9. För Nyckelanvändning väljer du Kryptering.
  10. Välj Skapa.
  11. Välj Principnycklar igen.
  12. Markera Lägga till.
  13. För Alternativ väljer du Manuell.
  14. Som Namn skriver du RestApiPassword. Prefixet B2C_1A_ kan läggas till automatiskt.
  15. I rutan Hemlighet anger du REST API-lösenordet.
  16. För Nyckelanvändning väljer du Kryptering.
  17. 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.

  1. Öppna filnamnstilläggsprincipen i arbetskatalogen (TrustFrameworkExtensions.xml).
  2. Sök efter den tekniska REST API-profilen. Till exempel REST-ValidateProfile, eller REST-GetProfile.
  3. Leta upp elementet <Metadata> .
  4. Ändra AuthenticationType till Basic.
  5. Ändra AllowInsecureAuthInProduction till false.
  6. 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

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 eller Email 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.

  1. 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 exempel contosowebapp.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"
    
  2. På Windows-datorn söker du efter och väljer Hantera användarcertifikat

  3. Under Certifikat – aktuell användare väljer du Personliga>certifikat>yourappname.yourtenant.onmicrosoft.com.

  4. Välj certifikatet och välj sedan Åtgärd>alla uppgifter>Exportera.

  5. Välj Nästa>Ja, exportera den privata nyckeln>Nästa.

  6. Acceptera standardinställningarna för Exportera filformat och välj sedan Nästa.

  7. Aktivera alternativet Lösenord , ange ett lösenord för certifikatet och välj sedan Nästa.

  8. Om du vill ange en plats för att spara certifikatet väljer du Bläddra och navigerar till valfri katalog.

  9. I fönstret Spara som anger du ett filnamn och väljer sedan Spara.

  10. 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:

  1. Logga in på Azure-portalen.
  2. Under Azure-tjänster väljer du Azure AD B2C.
  3. Välj API-anslutningsappar och välj sedan den API-Anslut eller som du vill konfigurera.
  4. Som Autentiseringstyp väljer du Certifikat.
  5. I rutan Ladda upp certifikat väljer du certifikatets .pfx-fil med en privat nyckel.
  6. I rutan Ange lösenord skriver du certifikatets lösenord. Providing certificate authentication configuration for an API connector.
  7. 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.

Providing a new certificate to an API connector when one already exists.

Lägga till en principnyckel för klientcertifikat

  1. Logga in på Azure-portalen.
  2. 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.
  3. 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.
  4. På sidan Översikt väljer du Identity Experience Framework.
  5. Välj Principnycklar och välj sedan Lägg till.
  6. I rutan Alternativ väljer du Ladda upp.
  7. I rutan Namn skriver du RestApiClientCertificate. Prefixet B2C_1A_ läggs till automatiskt.
  8. I rutan Filuppladdning väljer du certifikatets .pfx-fil med en privat nyckel.
  9. I rutan Lösenord skriver du certifikatets lösenord.
  10. 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.

  1. Öppna filnamnstilläggsprincipen i arbetskatalogen (TrustFrameworkExtensions.xml).
  2. Sök efter den tekniska REST API-profilen. Till exempel REST-ValidateProfile, eller REST-GetProfile.
  3. Leta upp elementet <Metadata> .
  4. Ändra AuthenticationType till ClientCertificate.
  5. Ändra AllowInsecureAuthInProduction till false.
  6. 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.

  1. Öppna tilläggsfilen för principen. Exempel: SocialAndLocalAccounts/TrustFrameworkExtensions.xml
  2. Sök efter elementet BuildingBlocks . Om elementet inte finns lägger du till det.
  3. Leta upp elementet ClaimsSchema . Om elementet inte finns lägger du till det.
  4. 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:

  1. Logga in på Azure-portalen.
  2. 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.
  3. 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.
  4. Välj Appregistreringar och välj sedan Ny registrering.
  5. Ange ett namn för programmet. Till exempel Client_Credentials_Auth_app.
  6. Under Kontotyper som stöds väljer du Endast Konton i den här organisationskatalogen.
  7. Välj Registrera.
  8. 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.

  1. På sidan Microsoft Entra ID – Appregistreringar väljer du det program som du skapade, till exempel Client_Credentials_Auth_app.
  2. I den vänstra menyn går du till Hantera och väljer Certifikathemligheter&.
  3. Välj Ny klienthemlighet.
  4. Ange en beskrivning av klienthemligheten i rutan Beskrivning . Till exempel clientsecret1.
  5. Under Upphör att gälla väljer du en varaktighet för vilken hemligheten är giltig och väljer sedan Lägg till.
  6. 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.

  1. Logga in på Azure-portalen.
  2. 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.
  3. 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.
  4. På sidan Översikt väljer du Identity Experience Framework.
  5. Välj Principnycklar och välj sedan Lägg till.
  6. För Alternativ väljer du Manual.
  7. Ange ett Namn för principnyckeln, SecureRESTClientId. Prefixet B2C_1A_ läggs automatiskt till i namnet på din nyckel.
  8. I Hemlighet anger du ditt klient-ID som du registrerade tidigare.
  9. För Nyckelanvändning väljer du Signature.
  10. Välj Skapa.
  11. Skapa en annan principnyckel med följande inställningar:
    • Namn: SecureRESTClientSecret.
    • Hemlighet: ange din klienthemlighet som du tidigare har registrerat

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:

  1. Öppna principfilen TrustFrameworkExtensions.xml-tillägg i arbetskatalogen.

  2. Sök efter noden <TechnicalProfile> som innehåller Id="REST-API-SignUp".

  3. Leta upp elementet <Metadata> .

  4. Ändra AuthenticationType till Bearer enligt följande:

    <Item Key="AuthenticationType">Bearer</Item>
    
  5. Ä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>
    
  6. 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.

  1. Logga in på Azure-portalen.
  2. 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.
  3. 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.
  4. På sidan Översikt väljer du Identity Experience Framework.
  5. Välj Principnycklar och välj sedan Lägg till.
  6. För Alternativ väljer du Manual.
  7. Ange ett Namn för principnyckeln. Exempel: RestApiBearerToken Prefixet B2C_1A_ läggs automatiskt till i namnet på din nyckel.
  8. I Hemlighet anger du din klienthemlighet som du tidigare har registrerat.
  9. För Nyckelanvändning väljer du Encryption.
  10. 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.

  1. Öppna filnamnstilläggsprincipen i arbetskatalogen (TrustFrameworkExtensions.xml).
  2. Sök efter den tekniska REST API-profilen. Till exempel REST-ValidateProfile, eller REST-GetProfile.
  3. Leta upp elementet <Metadata> .
  4. Ändra AuthenticationType till Bearer.
  5. Ändra AllowInsecureAuthInProduction till false.
  6. 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:

  1. Logga in på Azure-portalen.
  2. 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.
  3. 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.
  4. På sidan Översikt väljer du Identity Experience Framework.
  5. Välj Principnycklar och välj sedan Lägg till.
  6. För Alternativ väljer du Manuell.
  7. Som Namn skriver du RestApiKey. Prefixet B2C_1A_ kan läggas till automatiskt.
  8. I rutan Hemlighet anger du REST API-nyckeln.
  9. För Nyckelanvändning väljer du Kryptering.
  10. 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.

  1. Öppna filnamnstilläggsprincipen i arbetskatalogen (TrustFrameworkExtensions.xml).
  2. Sök efter den tekniska REST API-profilen. Till exempel REST-ValidateProfile, eller REST-GetProfile.
  3. Leta upp elementet <Metadata> .
  4. Ändra AuthenticationType till ApiKeyHeader.
  5. Ändra AllowInsecureAuthInProduction till false.
  6. 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