Bezpieczne interfejsy API używane na potrzeby łączników interfejsu API w usłudze Azure AD B2C

Podczas integrowania interfejsu API REST w przepływie użytkownika usługi Azure AD B2C należy chronić punkt końcowy interfejsu API REST przy użyciu uwierzytelniania. Uwierzytelnianie interfejsu API REST zapewnia, że tylko usługi, które mają odpowiednie poświadczenia, takie jak Azure AD B2C, mogą wykonywać wywołania do punktu końcowego. W tym artykule opisano sposób zabezpieczania interfejsu API REST.

Wymagania wstępne

Wykonaj kroki opisane w przewodniku Dodawanie łącznika interfejsu API do przepływu użytkownika rejestracji.

Punkt końcowy interfejsu API można chronić przy użyciu uwierzytelniania podstawowego HTTP lub uwierzytelniania certyfikatu klienta HTTPS. W obu przypadkach należy podać poświadczenia używane przez usługę Azure AD B2C podczas wywoływania punktu końcowego interfejsu API. Punkt końcowy interfejsu API sprawdza następnie poświadczenia i podejmuje decyzje dotyczące autoryzacji.

Uwierzytelnianie podstawowe HTTP

Uwierzytelnianie podstawowe HTTP jest definiowane w dokumencie RFC 2617. Uwierzytelnianie podstawowe działa w następujący sposób:

  • Usługa Azure AD B2C wysyła żądanie HTTP z poświadczeniami klienta (username i password) w nagłówku Authorization .

  • Poświadczenia są formatowane jako ciąg username:passwordzakodowany w formacie base64.

  • Następnie interfejs API jest odpowiedzialny za sprawdzenie tych wartości w celu wykonania innych decyzji dotyczących autoryzacji.

Aby skonfigurować Połączenie interfejsu API przy użyciu uwierzytelniania podstawowego PROTOKOŁU HTTP, wykonaj następujące kroki:

  1. Zaloguj się w witrynie Azure Portal.
  2. W obszarze Usługi platformy Azure wybierz pozycję Azure AD B2C lub wyszukaj i wybierz pozycję Azure AD B2C.
  3. Wybierz pozycję Łączniki interfejsu API, a następnie wybierz Połączenie interfejsu API, który chcesz skonfigurować.
  4. W polu Typ uwierzytelniania wybierz pozycję Podstawowa.
  5. Podaj nazwę użytkownika i hasło punktu końcowego interfejsu API REST. Providing basic authentication configuration for an API connector.
  6. Wybierz pozycję Zapisz.

Dodawanie kluczy zasad nazwy użytkownika i hasła interfejsu API REST

Aby skonfigurować profil techniczny interfejsu API REST przy użyciu uwierzytelniania podstawowego PROTOKOŁU HTTP, utwórz następujące klucze kryptograficzne do przechowywania nazwy użytkownika i hasła:

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  4. Na stronie Przegląd wybierz pozycję Identity Experience Framework.
  5. Wybierz pozycję Klucze zasad, a następnie wybierz pozycję Dodaj.
  6. W obszarze Opcje wybierz pozycję Ręczne.
  7. W polu Nazwa wpisz RestApiUsername. Prefiks B2C_1A_ może zostać dodany automatycznie.
  8. W polu Wpis tajny wprowadź nazwę użytkownika interfejsu API REST.
  9. W obszarze Użycie klucza wybierz pozycję Szyfrowanie.
  10. Wybierz pozycję Utwórz.
  11. Ponownie wybierz pozycję Klucze zasad.
  12. Wybierz Dodaj.
  13. W obszarze Opcje wybierz pozycję Ręczne.
  14. W polu Nazwa wpisz RestApiPassword. Prefiks B2C_1A_ może zostać dodany automatycznie.
  15. W polu Wpis tajny wprowadź hasło interfejsu API REST.
  16. W obszarze Użycie klucza wybierz pozycję Szyfrowanie.
  17. Wybierz pozycję Utwórz.

Konfigurowanie profilu technicznego interfejsu API REST do korzystania z uwierzytelniania podstawowego HTTP

Po utworzeniu niezbędnych kluczy skonfiguruj metadane profilu technicznego interfejsu API REST w celu odwoływania się do poświadczeń.

  1. W katalogu roboczym otwórz plik zasad rozszerzenia (TrustFrameworkExtensions.xml).
  2. Wyszukaj profil techniczny interfejsu API REST. Na przykład REST-ValidateProfile, lub REST-GetProfile.
  3. Znajdź element <Metadata>.
  4. Zmień wartość AuthenticationType na Basic.
  5. Zmień wartość allowInsecureAuthInProduction na false.
  6. Natychmiast po zamknięciu </Metadata> elementu dodaj następujący fragment kodu XML:
    <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
    </CryptographicKeys>
    

Poniższy fragment kodu XML jest przykładem profilu technicznego RESTful skonfigurowanego przy użyciu uwierzytelniania podstawowego HTTP:

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

Uwierzytelnianie certyfikatu klienta HTTPS

Uwierzytelnianie certyfikatu klienta to wzajemne uwierzytelnianie oparte na certyfikatach, w którym klient usługi Azure AD B2C dostarcza certyfikat klienta do serwera w celu potwierdzenia tożsamości. Dzieje się tak w ramach uzgadniania PROTOKOŁU SSL. Twój interfejs API jest odpowiedzialny za weryfikowanie certyfikatów należy do prawidłowego klienta, takiego jak usługa Azure AD B2C i podejmowanie decyzji dotyczących autoryzacji. Certyfikat klienta jest certyfikatem cyfrowym X.509.

Ważne

W środowiskach produkcyjnych certyfikat musi być podpisany przez urząd certyfikacji.

Tworzenie certyfikatu

Aby utworzyć certyfikat, możesz użyć usługi Azure Key Vault, która ma opcje certyfikatów z podpisem własnym i integracji z dostawcami wystawców certyfikatów dla podpisanych certyfikatów. Zalecane ustawienia obejmują:

  • Temat: CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • Typ zawartości: PKCS #12
  • Typ aktuona okresu istnienia: Email all contacts at a given percentage lifetime lub Email all contacts a given number of days before expiry
  • Typ klucza: RSA
  • Rozmiar klucza: 2048
  • Klucz prywatny możliwy do wyeksportowania: Yes (aby można było wyeksportować .pfx plik)

Następnie można wyeksportować certyfikat.

Opcja 2. Przygotowanie certyfikatu z podpisem własnym przy użyciu modułu programu PowerShell

Jeśli nie masz jeszcze certyfikatu, możesz użyć certyfikatu z podpisem własnym. Certyfikat z podpisem własnym jest certyfikatem zabezpieczeń, który nie jest podpisany przez urząd certyfikacji i nie zapewnia gwarancji bezpieczeństwa certyfikatu podpisanego przez urząd certyfikacji.

W systemie Windows użyj polecenia cmdlet New-SelfSignedCertificate w programie PowerShell, aby wygenerować certyfikat.

  1. Uruchom następujące polecenie programu PowerShell, aby wygenerować certyfikat z podpisem własnym. Zmodyfikuj -Subject argument odpowiednio dla aplikacji i nazwy dzierżawy usługi Azure AD B2C, na przykład contosowebapp.contoso.onmicrosoft.com. Możesz również dostosować -NotAfter datę, aby określić inne wygaśnięcie certyfikatu.

    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. Na komputerze z systemem Windows wyszukaj i wybierz pozycję Zarządzaj certyfikatami użytkowników

  3. W obszarze Certyfikaty — bieżący użytkownik wybierz pozycję Certyfikaty>osobiste>yourappname.yourtenant.onmicrosoft.com.

  4. Wybierz certyfikat, a następnie wybierz pozycję Akcja>Wszystkie zadania>eksportu.

  5. Wybierz pozycję Dalej>Tak, wyeksportuj klucz>prywatny Dalej.

  6. Zaakceptuj wartości domyślne formatu pliku eksportu, a następnie wybierz przycisk Dalej.

  7. Włącz opcję Hasło , wprowadź hasło dla certyfikatu, a następnie wybierz pozycję Dalej.

  8. Aby określić lokalizację do zapisania certyfikatu, wybierz pozycję Przeglądaj i przejdź do wybranego katalogu.

  9. W oknie Zapisz jako wprowadź nazwę pliku, a następnie wybierz pozycję Zapisz.

  10. Wybierz pozycje Next>Finish (Dalej, Zakończ).

Aby usługa Azure AD B2C akceptowała hasło pliku pfx, należy zaszyfrować hasło przy użyciu opcji TripleDES-SHA1 w narzędziu eksportu magazynu certyfikatów systemu Windows, w przeciwieństwie do AES256-SHA256.

Konfigurowanie Połączenie or interfejsu API

Aby skonfigurować Połączenie interfejsu API przy użyciu uwierzytelniania certyfikatu klienta, wykonaj następujące kroki:

  1. Zaloguj się w witrynie Azure Portal.
  2. W obszarze Usługi platformy Azure wybierz pozycję Azure AD B2C.
  3. Wybierz pozycję Łączniki interfejsu API, a następnie wybierz Połączenie interfejsu API, który chcesz skonfigurować.
  4. W polu Typ uwierzytelniania wybierz pozycję Certyfikat.
  5. W polu Przekaż certyfikat wybierz plik pfx certyfikatu z kluczem prywatnym.
  6. W polu Wprowadź hasło wpisz hasło certyfikatu. Providing certificate authentication configuration for an API connector.
  7. Wybierz pozycję Zapisz.

Podejmowanie decyzji dotyczących autoryzacji

Aby chronić punkty końcowe interfejsu API, interfejs API musi zaimplementować autoryzację opartą na wysłanych certyfikatach klienta. Aby uzyskać informacje na temat usługi aplikacja systemu Azure i usługi Azure Functions, zobacz konfigurowanie wzajemnego uwierzytelniania TLS, aby dowiedzieć się, jak włączyć i zweryfikować certyfikat z poziomu kodu interfejsu API. Alternatywnie możesz użyć usługi Azure API Management jako warstwy przed dowolną usługą interfejsu API, aby sprawdzić właściwości certyfikatu klienta pod kątem żądanych wartości.

Odnawianie certyfikatów

Zaleca się ustawienie alertów przypomnienia dla momentu wygaśnięcia certyfikatu. Musisz wygenerować nowy certyfikat i powtórzyć powyższe kroki, gdy używane certyfikaty wkrótce wygaśnie. Aby "przerzucić" użycie nowego certyfikatu, usługa interfejsu API może nadal akceptować stare i nowe certyfikaty przez tymczasowy czas wdrażania nowego certyfikatu.

Aby przekazać nowy certyfikat do istniejącego łącznika interfejsu API, wybierz łącznik interfejsu API w obszarze Łączniki interfejsu API i kliknij pozycję Przekaż nowy certyfikat. Ostatnio przekazany certyfikat, który nie wygasł i którego data rozpoczęcia została przekazana, zostanie automatycznie użyty przez usługę Azure AD B2C.

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

Dodawanie klucza zasad certyfikatu klienta

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  4. Na stronie Przegląd wybierz pozycję Identity Experience Framework.
  5. Wybierz pozycję Klucze zasad, a następnie wybierz pozycję Dodaj.
  6. W oknie Opcje wybierz pozycję Przekaż.
  7. W polu Nazwa wpisz RestApiClientCertificate. Prefiks B2C_1A_ jest dodawany automatycznie.
  8. W polu Przekazywanie pliku wybierz plik pfx certyfikatu z kluczem prywatnym.
  9. W polu Hasło wpisz hasło certyfikatu.
  10. Wybierz pozycję Utwórz.

Konfigurowanie profilu technicznego interfejsu API REST do korzystania z uwierzytelniania certyfikatu klienta

Po utworzeniu niezbędnego klucza skonfiguruj metadane profilu technicznego interfejsu API REST, aby odwoływać się do certyfikatu klienta.

  1. W katalogu roboczym otwórz plik zasad rozszerzenia (TrustFrameworkExtensions.xml).
  2. Wyszukaj profil techniczny interfejsu API REST. Na przykład REST-ValidateProfile, lub REST-GetProfile.
  3. Znajdź element <Metadata>.
  4. Zmień wartość AuthenticationType na ClientCertificate.
  5. Zmień wartość allowInsecureAuthInProduction na false.
  6. Natychmiast po zamknięciu </Metadata> elementu dodaj następujący fragment kodu XML:
    <CryptographicKeys>
       <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
    </CryptographicKeys>
    

Poniższy fragment kodu XML to przykład profilu technicznego RESTful skonfigurowanego przy użyciu certyfikatu klienta HTTP:

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

Uwierzytelnianie elementu nośnego OAuth2

Uwierzytelnianie tokenu elementu nośnego jest definiowane w strukturze autoryzacji OAuth2.0: użycie tokenu elementu nośnego (RFC 6750). W przypadku uwierzytelniania tokenu elementu nośnego usługa Azure AD B2C wysyła żądanie HTTP z tokenem w nagłówku autoryzacji.

Authorization: Bearer <token>

Token elementu nośnego jest nieprzezroczystym ciągiem. Może to być token dostępu JWT lub dowolny ciąg, którego interfejs API REST oczekuje, że usługa Azure AD B2C zostanie wysłana w nagłówku autoryzacji. Usługa Azure AD B2C obsługuje następujące typy:

  • Token elementu nośnego. Aby móc wysłać token elementu nośnego w profilu technicznym Restful, zasady muszą najpierw uzyskać token elementu nośnego, a następnie użyć go w profilu technicznym RESTful.
  • Token elementu nośnego statycznego. Użyj tego podejścia, gdy interfejs API REST wystawia długoterminowy token dostępu. Aby użyć tokenu elementu nośnego statycznego, utwórz klucz zasad i utwórz odwołanie z profilu technicznego RESTful do klucza zasad.

Korzystanie z elementu nośnego OAuth2

W poniższych krokach pokazano, jak używać poświadczeń klienta w celu uzyskania tokenu elementu nośnego i przekazać go do nagłówka Autoryzacja wywołań interfejsu API REST.

Definiowanie oświadczenia do przechowywania tokenu elementu nośnego

Oświadczenie zapewnia tymczasowe przechowywanie danych podczas wykonywania zasad usługi Azure AD B2C. Schemat oświadczeń to miejsce, w którym zadeklarowane są oświadczenia. Token dostępu musi być przechowywany w oświadczeniu, który będzie używany później.

  1. Otwórz plik rozszerzeń zasad. Na przykład SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Wyszukaj element BuildingBlocks. Jeśli element nie istnieje, dodaj go.
  3. Znajdź element ClaimsSchema . Jeśli element nie istnieje, dodaj go.
  4. Dodaj następujące oświadczenia do elementu 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>

Uzyskiwanie tokenu dostępu

Token dostępu można uzyskać na jeden z kilku sposobów dla dostawcy tożsamości federacyjnej, wywołując interfejs API REST, który zwraca token dostępu, przy użyciu przepływu ROPC lub przy użyciu przepływu poświadczeń klienta. Przepływ poświadczeń klienta jest często używany w przypadku interakcji między serwerami, które muszą działać w tle bez natychmiastowej interakcji z użytkownikiem.

Uzyskiwanie tokenu dostępu firmy Microsoft Entra

W poniższym przykładzie użyto profilu technicznego interfejsu API REST, aby wysłać żądanie do punktu końcowego tokenu Entra firmy Microsoft przy użyciu poświadczeń klienta przekazanych jako uwierzytelnianie podstawowe PROTOKOŁU HTTP. Aby uzyskać więcej informacji, zobacz Platforma tożsamości Microsoft i przepływ poświadczeń klienta OAuth 2.0.

Aby profil techniczny mógł wchodzić w interakcje z identyfikatorem Entra firmy Microsoft w celu uzyskania tokenu dostępu, musisz zarejestrować aplikację. Usługa Azure AD B2C korzysta z platformy Microsoft Entra. Aplikację można utworzyć w dzierżawie usługi Azure AD B2C lub w dowolnej dzierżawie firmy Microsoft, którą zarządzasz. Aby zarejestrować aplikację:

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. W menu po lewej stronie wybierz pozycję Microsoft Entra ID. Możesz też wybrać pozycję Wszystkie usługi i wyszukać i wybrać pozycję Microsoft Entra ID.
  4. Wybierz pozycję Rejestracje aplikacji, a następnie wybierz pozycję Nowa rejestracja.
  5. Wprowadź nazwę aplikacji. Na przykład Client_Credentials_Auth_app.
  6. W obszarze Obsługiwane typy kont wybierz pozycję Konta tylko w tym katalogu organizacyjnym.
  7. Wybierz opcję Zarejestruj.
  8. Zarejestruj identyfikator aplikacji (klienta).

W przypadku przepływu poświadczeń klienta należy utworzyć klucz tajny aplikacji. Wpis tajny klienta jest również nazywany hasłem aplikacji. Aplikacja używa wpisu tajnego do uzyskania tokenu dostępu.

  1. Na stronie Microsoft Entra ID — Rejestracje aplikacji wybierz utworzoną aplikację, na przykład Client_Credentials_Auth_app.
  2. W menu po lewej stronie w obszarze Zarządzanie wybierz pozycję Wpisy tajne certyfikatów&.
  3. Wybierz Nowy klucz tajny klienta.
  4. Wprowadź opis wpisu tajnego klienta w polu Opis . Na przykład clientsecret1.
  5. W obszarze Wygasa wybierz czas trwania, dla którego wpis tajny jest prawidłowy, a następnie wybierz pozycję Dodaj.
  6. Zapisz wartość wpisu tajnego do użycia w kodzie aplikacji klienckiej. Ta wartość wpisu tajnego nigdy nie jest wyświetlana ponownie po opuszczeniu tej strony. Ta wartość jest używana jako wpis tajny aplikacji w kodzie aplikacji.

Tworzenie kluczy zasad usługi Azure AD B2C

Musisz przechowywać identyfikator klienta i wartość wpisu tajnego klienta, która została wcześniej zarejestrowana w dzierżawie usługi Azure AD B2C.

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  4. Na stronie Przegląd wybierz pozycję Identity Experience Framework.
  5. Wybierz pozycję Klucze zasad, a następnie wybierz pozycję Dodaj.
  6. W obszarze Opcje wybierz pozycję Manual.
  7. Wprowadź nazwę klucza zasad. SecureRESTClientId Prefiks B2C_1A_ jest dodawany automatycznie do nazwy klucza.
  8. W polu Wpis tajny wprowadź wcześniej zarejestrowany identyfikator klienta.
  9. W obszarze Użycie klucza wybierz pozycję Signature.
  10. Wybierz pozycję Utwórz.
  11. Utwórz kolejny klucz zasad z następującymi ustawieniami:
    • Nazwa: SecureRESTClientSecret.
    • Wpis tajny: wprowadź wcześniej zarejestrowany wpis tajny klienta

W polu ServiceUrl zastąp ciąg your-tenant-name nazwą dzierżawy firmy Microsoft Entra. Zobacz dokumentację profilu technicznego RESTful, aby zapoznać się ze wszystkimi dostępnymi opcjami.

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

Uwaga

Jeśli używasz grant_type oświadczeń lub scope w innych profilach technicznych, zalecamy określenie i DefaultValue użycie AlwaysUseDefaultValue="true" ich w celu uniknięcia potencjalnych konfliktów w powiązaniu z nieprawidłową wartością.

Zmienianie profilu technicznego REST w celu korzystania z uwierzytelniania tokenu elementu nośnego

Aby obsługiwać uwierzytelnianie tokenu elementu nośnego w zasadach niestandardowych, zmodyfikuj profil techniczny interfejsu API REST, wykonując następujące czynności:

  1. W katalogu roboczym otwórz plik zasad rozszerzenia TrustFrameworkExtensions.xml .

  2. <TechnicalProfile> Wyszukaj węzeł, który zawiera Id="REST-API-SignUp"element .

  3. Znajdź element <Metadata>.

  4. Zmień wartość AuthenticationType na Bearer w następujący sposób:

    <Item Key="AuthenticationType">Bearer</Item>
    
  5. Zmień lub dodaj element UseClaimAsBearerToken do elementu bearerToken w następujący sposób. BearerToken to nazwa oświadczenia, z którego jest pobierany token elementu nośnego (oświadczenie wyjściowe z REST-AcquireAccessTokenelementu ).

    <Item Key="UseClaimAsBearerToken">bearerToken</Item>
    
  6. Dodaj oświadczenie z poprzedniego kroku jako oświadczenie wejściowe:

    <InputClaim ClaimTypeReferenceId="bearerToken"/>
    

Po zaktualizowaniu zasad profil techniczny powinien wyglądać podobnie do następującego kodu XML:

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

Wywoływanie profilu technicznego REST

Aby wywołać REST-GetProfile profil techniczny, najpierw musisz uzyskać token dostępu firmy Microsoft Entra przy użyciu profilu technicznego REST-AcquireAccessToken . W poniższym przykładzie pokazano, jak wywołać REST-GetProfile profil techniczny z profilu technicznego weryfikacji:

<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
  <ValidationTechnicalProfile ReferenceId="REST-GetProfile" />
</ValidationTechnicalProfiles>

W poniższym przykładzie pokazano, jak wywołać REST-GetProfile profil techniczny z podróży użytkownika lub podróży podrzędnej:

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

Używanie statycznego elementu nośnego OAuth2

Dodawanie klucza zasad tokenu elementu nośnego OAuth2

Aby skonfigurować profil techniczny interfejsu API REST przy użyciu tokenu elementu nośnego OAuth2, uzyskaj token dostępu od właściciela interfejsu API REST. Następnie utwórz następujący klucz kryptograficzny do przechowywania tokenu elementu nośnego.

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  4. Na stronie Przegląd wybierz pozycję Identity Experience Framework.
  5. Wybierz pozycję Klucze zasad, a następnie wybierz pozycję Dodaj.
  6. W obszarze Opcje wybierz pozycję Manual.
  7. Wprowadź nazwę klucza zasad. Na przykład RestApiBearerToken. Prefiks B2C_1A_ jest dodawany automatycznie do nazwy klucza.
  8. W obszarze Wpis tajny wprowadź wcześniej zarejestrowany wpis tajny klienta.
  9. W obszarze Użycie klucza wybierz pozycję Encryption.
  10. Wybierz pozycję Utwórz.

Konfigurowanie profilu technicznego interfejsu API REST do używania klucza zasad tokenu elementu nośnego

Po utworzeniu niezbędnego klucza skonfiguruj metadane profilu technicznego interfejsu API REST, aby odwoływać się do tokenu elementu nośnego.

  1. W katalogu roboczym otwórz plik zasad rozszerzenia (TrustFrameworkExtensions.xml).
  2. Wyszukaj profil techniczny interfejsu API REST. Na przykład REST-ValidateProfile, lub REST-GetProfile.
  3. Znajdź element <Metadata>.
  4. Zmień wartość AuthenticationType na Bearer.
  5. Zmień wartość allowInsecureAuthInProduction na false.
  6. Natychmiast po zamknięciu </Metadata> elementu dodaj następujący fragment kodu XML:
    <CryptographicKeys>
       <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
    </CryptographicKeys>
    

Poniższy fragment kodu XML jest przykładem profilu technicznego RESTful skonfigurowanego z uwierzytelnianiem tokenu elementu nośnego:

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

Dodaj odwołanie do profilu technicznego weryfikacji do profilu technicznego rejestracji, który wywołuje element REST-AcquireAccessToken. To zachowanie oznacza, że usługa Azure AD B2C przechodzi do tworzenia konta w katalogu dopiero po pomyślnej weryfikacji.

Na przykład:

```XML
<ValidationTechnicalProfiles>
   ....
   <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
   ....
</ValidationTechnicalProfiles>

Uwierzytelnianie klucza interfejsu API

Niektóre usługi używają mechanizmu "Klucz interfejsu API", aby zaciemnić dostęp do punktów końcowych HTTP podczas programowania, wymagając od obiektu wywołującego uwzględnienia unikatowego klucza jako nagłówka HTTP lub parametru zapytania HTTP. W przypadku usługi Azure Functions można to zrobić, włączając code parametr jako zapytanie w adresie URL punktu końcowego łącznika interfejsu API. Na przykład https://contoso.azurewebsites.net/api/endpoint?code=0123456789).

Nie jest to mechanizm, który powinien być używany samodzielnie w środowisku produkcyjnym. W związku z tym konfiguracja uwierzytelniania podstawowego lub certyfikatu jest zawsze wymagana. Jeśli nie chcesz implementować żadnej metody uwierzytelniania (niezalecane) na potrzeby programowania, możesz wybrać opcję "podstawowe" uwierzytelnianie w konfiguracji łącznika interfejsu API i użyć wartości tymczasowych dla username i password że interfejs API może zignorować podczas implementowania odpowiedniej autoryzacji.

Klucz interfejsu API to unikatowy identyfikator używany do uwierzytelniania użytkownika w celu uzyskania dostępu do punktu końcowego interfejsu API REST. Klucz jest wysyłany w niestandardowym nagłówku HTTP. Na przykład wyzwalacz HTTP usługi Azure Functions używa nagłówka x-functions-key HTTP do identyfikowania obiektu żądającego.

Dodawanie kluczy zasad klucza interfejsu API

Aby skonfigurować profil techniczny interfejsu API REST przy użyciu uwierzytelniania klucza interfejsu API, utwórz następujący klucz kryptograficzny do przechowywania klucza interfejsu API:

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  4. Na stronie Przegląd wybierz pozycję Identity Experience Framework.
  5. Wybierz pozycję Klucze zasad, a następnie wybierz pozycję Dodaj.
  6. W obszarze Opcje wybierz pozycję Ręczne.
  7. W polu Nazwa wpisz RestApiKey. Prefiks B2C_1A_ może zostać dodany automatycznie.
  8. W polu Wpis tajny wprowadź klucz interfejsu API REST.
  9. W obszarze Użycie klucza wybierz pozycję Szyfrowanie.
  10. Wybierz pozycję Utwórz.

Konfigurowanie profilu technicznego interfejsu API REST do korzystania z uwierzytelniania klucza interfejsu API

Po utworzeniu niezbędnego klucza skonfiguruj metadane profilu technicznego interfejsu API REST, aby odwoływać się do poświadczeń.

  1. W katalogu roboczym otwórz plik zasad rozszerzenia (TrustFrameworkExtensions.xml).
  2. Wyszukaj profil techniczny interfejsu API REST. Na przykład REST-ValidateProfile, lub REST-GetProfile.
  3. Znajdź element <Metadata>.
  4. Zmień wartość AuthenticationType na ApiKeyHeader.
  5. Zmień wartość allowInsecureAuthInProduction na false.
  6. Natychmiast po zamknięciu </Metadata> elementu dodaj następujący fragment kodu XML:
    <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
    </CryptographicKeys>
    

Identyfikator klucza kryptograficznego definiuje nagłówek HTTP. W tym przykładzie klucz interfejsu API jest wysyłany jako x-functions-key.

Poniższy fragment kodu XML jest przykładem profilu technicznego RESTful skonfigurowanego do wywoływania funkcji platformy Azure z uwierzytelnianiem klucza interfejsu API:

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

Następne kroki