Udostępnij za pośrednictwem


Bezpieczne interfejsy API do łączników w usłudze Azure AD B2C

Ważne

Od 1 maja 2025 r. usługa Azure AD B2C nie będzie już dostępna do zakupu dla nowych klientów. Dowiedz się więcej w naszych często zadawanych pytaniach.

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 instrukcji Dodawanie łącznika interfejsu API do procesu rejestracji użytkownika.

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, które Azure AD B2C używa, gdy wywołuje punkt końcowy 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ć łącznik interfejsu API przy użyciu uwierzytelniania podstawowego PROTOKOŁU HTTP, wykonaj następujące kroki:

  1. Zaloguj się do witryny Azure Portal.
  2. W obszarze Usługi platformy Azure wybierz pozycję Azure AD B2C lub wyszukaj i wybierz pozycję Azure AD B2C.
  3. Wybierz łączniki API, a następnie wybierz łącznik 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. Zapewnianie podstawowej konfiguracji uwierzytelniania dla łącznika interfejsu API.
  6. Wybierz Zapisz.

Dodaj klucze zasad nazwy użytkownika i hasła dla interfejsu REST API

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ę do witryny Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się na dzierżawę Azure AD B2C z menu Katalogi + subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz pozycję Azure AD B2C.
  4. Na stronie Przegląd ogólny wybierz pozycję Identity Experience Framework.
  5. Wybierz Klucze zasad, a następnie wybierz 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 Utwórz.
  11. Wybierz ponownie 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 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 strategii rozszerzeń (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żących do ważnego 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>yourappname.yourtenant.onmicrosoft.com.

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

  5. Wybierz pozycję >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 pozycję Next>Finish (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 łącznika interfejsu API

Aby skonfigurować łącznik interfejsu API z uwierzytelnianiem certyfikatu klienta, wykonaj następujące kroki:

  1. Zaloguj się do witryny Azure Portal.
  2. W obszarze usługi Azurewybierz Azure AD B2C.
  3. Wybierz łączniki API, a następnie wybierz łącznik 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. Zapewnianie konfiguracji uwierzytelniania certyfikatu dla łącznika interfejsu API.
  7. Wybierz 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. Najbardziej niedawno przesłany certyfikat, który nie wygasł i którego data rozpoczęcia minęła, zostanie automatycznie użyty przez usługę Azure AD B2C.

Przekazywanie nowego certyfikatu łącznikowi API, gdy jeden już istnieje.

Dodawanie klucza zasad certyfikatu klienta

  1. Zaloguj się do witryny Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się na dzierżawę Azure AD B2C z menu Katalogi + subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz pozycję Azure AD B2C.
  4. Na stronie Przegląd ogólny wybierz pozycję Identity Experience Framework.
  5. Wybierz Klucze zasad, a następnie wybierz 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 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 strategii rozszerzeń (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 za pomocą tokenu typu 'bearer', Azure AD B2C wysyła żądanie HTTP z tokenem w nagłówku autoryzacji.

Authorization: Bearer <token>

Token otrzymywacza jest nieprzezroczystym ciągiem znaków. Może to być token dostępu JWT lub dowolny ciąg, którego oczekuje interfejs API REST, aby Azure AD B2C przesłał w nagłówku autoryzacji. Usługa Azure AD B2C obsługuje następujące typy:

  • Token elementu nośnego. Aby móc wysłać bearer token w profilu technicznym RESTful, polityka musi najpierw uzyskać bearer token, 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.

Użycie tokena typu Bearer w OAuth2

W poniższych krokach pokazano, jak używać poświadczeń klienta w celu uzyskania tokenu nosiciela i przekazania go do nagłówka Autoryzacji wywołań REST API.

Definiowanie oświadczenia do przechowywania tokenu elementu nośnego

Roszczenie zapewnia tymczasowe przechowywanie danych podczas wykonywania polityki usługi Azure AD B2C. Schemat oświadczeń to miejsce, w którym zadeklarowane są oświadczenia. Token dostępu musi być przechowywany w roszczeniu, aby można go było użyć 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: od 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.

Ostrzeżenie

Firma Microsoft zaleca, aby nie używać przepływu ROPC. Ten przepływ wymaga bardzo wysokiego poziomu zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Tego przepływu należy używać tylko wtedy, gdy inne bezpieczniejsze przepływy nie są opłacalne.

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 Microsoft Entra, którą zarządzasz. Aby zarejestrować aplikację:

  1. Zaloguj się do witryny Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się na dzierżawę Azure AD B2C z menu Katalogi + subskrypcje.
  3. W lewym menu wybierz opcję 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. Pod Obsługiwane typy kont wybierz Konta tylko w tym katalogu organizacyjnym.
  7. Wybierz pozycję 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 tajemnicy 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ądzajwybierz pozycję Certyfikaty & tajne informacje.
  3. Wybierz Nowy klucz tajny klienta.
  4. Wprowadź opis tajnego klucza klienta w polu Opis . Na przykład clientsecret1.
  5. Pod Wygasa wybierz okres czasu, na jaki tajemnica jest ważna, a następnie wybierz Dodaj.
  6. Zapisz wartość sekretu do wykorzystania w kodzie aplikacji klienckiej. Ta wartość tajna nigdy nie jest wyświetlana ponownie po opuszczeniu strony. Tę wartość używa się jako sekret aplikacji w kodzie tej aplikacji.

Tworzenie kluczy zasad usługi Azure AD B2C

Musisz przechowywać identyfikator klienta i wartość tajemnicy klienta, które wcześniej zapisałeś w dzierżawie usługi Azure AD B2C.

  1. Zaloguj się do witryny Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się na dzierżawę Azure AD B2C z menu Katalogi + subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz pozycję Azure AD B2C.
  4. Na stronie Przegląd ogólny wybierz pozycję Identity Experience Framework.
  5. Wybierz Klucze zasad, a następnie wybierz 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 Utwórz.
  11. Utwórz kolejny klucz zasad z następującymi ustawieniami:
    • Nazwa: SecureRESTClientSecret.
    • Sekret: wprowadź wcześniej zanotowany tajny klucz klienta

W polu ServiceUrl zastąp your-tenant-name nazwą swojego dzierżawcy Microsoft Entra. Zobacz profil techniczny RESTful , aby poznać wszystkie dostępne opcje.

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

Jeśli używasz oświadczeń grant_type lub scope w innych profilach technicznych, zalecamy, aby również określiły DefaultValue oraz użyły AlwaysUseDefaultValue="true", aby uniknąć potencjalnych konfliktów związanych 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. Wyszukaj węzeł <TechnicalProfile>, który zawiera Id="REST-API-SignUp".

  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 UseClaimAsBearerToken na 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 elementu REST-AcquireAccessToken).

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

Dodaj klucz polityki tokenu dostępu 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ę do witryny Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się na dzierżawę Azure AD B2C z menu Katalogi + subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz pozycję Azure AD B2C.
  4. Na stronie Przegląd ogólny wybierz pozycję Identity Experience Framework.
  5. Wybierz Klucze zasad, a następnie wybierz 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 Tajny wprowadź wcześniej zarejestrowany tajny klienta.
  9. W obszarze Użycie klucza wybierz pozycję Encryption.
  10. Wybierz Utwórz.

Skonfiguruj profil techniczny interfejsu API REST, aby używał klucza zasady tokenu uwierzytelniającego.

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 strategii rozszerzeń (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 technicznego profilu weryfikacji w profilu technicznym rejestracji, który wywołuje REST-AcquireAccessToken. To zachowanie oznacza, że usługa Azure AD B2C przechodzi do tworzenia konta w katalogu dopiero po pomyślnej weryfikacji.

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 rozwoju, możesz wybrać opcję "podstawowa" uwierzytelniania w konfiguracji łącznika interfejsu API i użyć wartości tymczasowych dla username i password, które 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 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ę do witryny Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się na dzierżawę Azure AD B2C z menu Katalogi + subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz pozycję Azure AD B2C.
  4. Na stronie Przegląd ogólny wybierz pozycję Identity Experience Framework.
  5. Wybierz Klucze zasad, a następnie wybierz 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 Utwórz.

Konfiguracja profilu technicznego interfejsu REST API do używania uwierzytelniania klucza 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 strategii rozszerzeń (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>