Weryfikowanie tokenu firmy Microsoft Entra
DOTYCZY: Wszystkie warstwy usługi API Management
Zasady validate-azure-ad-token
wymuszają istnienie i ważność tokenu internetowego JSON (JWT), który został dostarczony przez usługę Microsoft Entra (dawniej o nazwie Azure Active Directory) dla określonego zestawu podmiotów zabezpieczeń w katalogu. Zestaw JWT można wyodrębnić z określonego nagłówka HTTP, parametru zapytania lub wartości udostępnionej przy użyciu wyrażenia zasad lub zmiennej kontekstowej.
Uwaga
Aby zweryfikować JWT, który został dostarczony przez innego dostawcę tożsamości, usługa API Management udostępnia validate-jwt
również ogólne zasady.
Uwaga
Ustaw elementy zasad i elementy podrzędne w kolejności podanej w instrukcji zasad. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.
Instrukcja zasad
<validate-azure-ad-token
tenant-id="tenant ID or URL (for example, "contoso.onmicrosoft.com") of the Azure Active Directory service"
header-name="name of HTTP header containing the token (alternatively, use query-parameter-name or token-value attribute to specify token)"
query-parameter-name="name of query parameter used to pass the token (alternative, use header-name or token-value attribute to specify token)"
token-value="expression returning the token as a string (alternatively, use header-name or query-parameter attribute to specify token)"
failed-validation-httpcode="HTTP status code to return on failure"
failed-validation-error-message="error message to return on failure"
output-token-variable-name="name of a variable to receive a JWT object representing successfully validated token">
<client-application-ids>
<application-id>Client application ID from Azure Active Directory</application-id>
<!-- If there are multiple client application IDs, then add additional application-id elements -->
</client-application-ids>
<backend-application-ids>
<application-id>Backend application ID from Azure Active Directory</application-id>
<!-- If there are multiple backend application IDs, then add additional application-id elements -->
</backend-application-ids>
<audiences>
<audience>audience string</audience>
<!-- if there are multiple possible audiences, then add additional audience elements -->
</audiences>
<required-claims>
<claim name="name of the claim as it appears in the token" match="all|any" separator="separator character in a multi-valued claim">
<value>claim value as it is expected to appear in the token</value>
<!-- if there is more than one allowed value, then add additional value elements -->
</claim>
<!-- if there are multiple possible allowed values, then add additional value elements -->
</required-claims>
</validate-azure-ad-token>
Atrybuty
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
tenant-id | Identyfikator dzierżawy lub adres URL usługi Microsoft Entra. Wyrażenia zasad są dozwolone. | Tak | Nie dotyczy |
nazwa nagłówka | Nazwa nagłówka HTTP zawierającego token. Wyrażenia zasad są dozwolone. | Należy określić jedną z header-name wartości lub query-parameter-name token-value . |
Authorization |
query-parameter-name | Nazwa parametru zapytania zawierającego token. Wyrażenia zasad są dozwolone. | Należy określić jedną z header-name wartości lub query-parameter-name token-value . |
Nie dotyczy |
token-value | Wyrażenie zwracające ciąg zawierający token. Nie można zwracać Bearer jako części wartości tokenu. Wyrażenia zasad są dozwolone. |
Należy określić jedną z header-name wartości lub query-parameter-name token-value . |
Nie dotyczy |
failed-validation-httpcode | Kod stanu HTTP, który ma być zwracany, jeśli zestaw JWT nie przejdzie walidacji. Wyrażenia zasad są dozwolone. | Nie. | 401 |
komunikat o błędzie sprawdzania poprawności nie powiodło się | Komunikat o błędzie zwracany w treści odpowiedzi HTTP, jeśli zestaw JWT nie przejdzie walidacji. Ten komunikat musi mieć poprawnie znaki specjalne. Wyrażenia zasad są dozwolone. | Nie. | Domyślny komunikat o błędzie zależy od problemu z walidacją, na przykład "JWT not present". |
output-token-variable-name | Ciąg. Nazwa zmiennej kontekstowej, która będzie otrzymywać wartość tokenu jako obiekt typu Jwt po pomyślnej weryfikacji tokenu. Wyrażenia zasad nie są dozwolone. |
Nie. | Nie dotyczy |
Elementy
Element | opis | Wymagania |
---|---|---|
Odbiorców | Zawiera listę akceptowalnych oświadczeń odbiorców, które mogą być obecne w tokenie. Jeśli istnieje wiele audience wartości, każda wartość jest podejmowana do momentu wyczerpania wszystkich (w tym przypadku walidacja zakończy się niepowodzeniem) lub do momentu pomyślnego zakończenia. Wyrażenia zasad są dozwolone. |
Nie. |
backend-application-ids | Zawiera listę dopuszczalnych identyfikatorów aplikacji zaplecza. Jest to wymagane tylko w zaawansowanych przypadkach konfiguracji opcji i można je zazwyczaj usunąć. Wyrażenia zasad nie są dozwolone. | Nie. |
client-application-ids | Zawiera listę dopuszczalnych identyfikatorów aplikacji klienckich. Jeśli istnieje wiele application-id elementów, każda wartość jest podejmowana do momentu wyczerpania wszystkich (w tym przypadku walidacja zakończy się niepowodzeniem) lub do momentu pomyślnego zakończenia. Jeśli nie podano identyfikatora aplikacji klienckiej, należy określić co najmniej jedno audience oświadczenie. Wyrażenia zasad nie są dozwolone. |
Nie. |
required-claims | Zawiera listę elementów dla claim wartości oświadczeń, które powinny być obecne w tokenie, który ma być uznawany za prawidłowy. match Gdy atrybut jest ustawiony na all wartość , każda wartość oświadczenia w zasadach musi być obecna w tokenie, aby walidacja zakończyła się pomyślnie. match Gdy atrybut jest ustawiony na any , co najmniej jedno oświadczenie musi znajdować się w tokenie, aby walidacja zakończyła się pomyślnie. Wyrażenia zasad są dozwolone. |
Nie. |
atrybuty oświadczenia
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
name | Nazwa oświadczenia, jak oczekiwano, w tokenie. Wyrażenia zasad są dozwolone. | Tak | Nie dotyczy |
match | Atrybut match w elemecie claim określa, czy każda wartość oświadczenia w zasadach musi znajdować się w tokenie, aby walidacja zakończyła się pomyślnie. Dopuszczalne wartości:- all — każda wartość oświadczenia w zasadach musi być obecna w tokenie, aby walidacja zakończyła się pomyślnie.- any — co najmniej jedna wartość oświadczenia musi znajdować się w tokenie, aby walidacja zakończyła się pomyślnie.Wyrażenia zasad są dozwolone. |
Nie. | wszystkie |
Separator | Ciąg. Określa separator (na przykład ","), który ma być używany do wyodrębniania zestawu wartości z oświadczenia wielowartościowego. Wyrażenia zasad są dozwolone. | Nie. | Nie dotyczy |
Użycie
- Sekcje zasad: ruch przychodzący
- Zakresy zasad: globalny, obszar roboczy, produkt, interfejs API, operacja
- Bramy: klasyczne, v2, zużycie, self-hosted
Uwagi dotyczące użycia
- Zasad ograniczeń dostępu można używać w różnych zakresach do różnych celów. Na przykład można zabezpieczyć cały interfejs API za pomocą uwierzytelniania firmy Microsoft Entra, stosując
validate-azure-ad-token
zasady na poziomie interfejsu API lub stosując je na poziomie operacji interfejsu API i użyćclaims
do bardziej szczegółowej kontroli. - Identyfikator Entra firmy Microsoft dla klientów (wersja zapoznawcza) nie jest obsługiwany.
Przykłady
Prosta walidacja tokenu
Poniższe zasady są minimalną formą validate-azure-ad-token
zasad. Oczekuje się, że JWT zostanie podany w domyślnym Authorization
nagłówku przy użyciu schematu Bearer
. W tym przykładzie identyfikator dzierżawy firmy Microsoft i identyfikator aplikacji klienckiej są udostępniane przy użyciu nazwanych wartości.
<validate-azure-ad-token tenant-id="{{aad-tenant-id}}">
<client-application-ids>
<application-id>{{aad-client-application-id}}</application-id>
</client-application-ids>
</validate-azure-ad-token>
Sprawdź, czy odbiorcy i oświadczenia są poprawne
Poniższe zasady sprawdzają, czy odbiorcą jest nazwa hosta wystąpienia usługi API Management i czy ctry
oświadczenie to US
. Nazwa hosta jest udostępniana przy użyciu wyrażenia zasad, a identyfikator dzierżawy Firmy Microsoft Entra i identyfikator aplikacji klienckiej są udostępniane przy użyciu nazwanych wartości. Zdekodowany zestaw JWT jest udostępniany w zmiennej jwt
po weryfikacji.
Aby uzyskać więcej informacji na temat opcjonalnych oświadczeń, przeczytaj Artykuł Zapewnianie opcjonalnych oświadczeń do aplikacji.
<validate-azure-ad-token tenant-id="{{aad-tenant-id}}" output-token-variable-name="jwt">
<client-application-ids>
<application-id>{{aad-client-application-id}}</application-id>
</client-application-ids>
<audiences>
<audience>@(context.Request.OriginalUrl.Host)</audience>
</audiences>
<required-claims>
<claim name="ctry" match="any">
<value>US</value>
</claim>
</required-claims>
</validate-azure-ad-token>
Powiązane zasady
Powiązana zawartość
Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz:
- Samouczek: przekształcanie i ochrona interfejsu API
- Dokumentacja zasad dla pełnej listy instrukcji zasad i ich ustawień
- Wyrażenia zasad
- Ustawianie lub edytowanie zasad
- Ponowne używanie konfiguracji zasad
- Repozytorium fragmentów zasad
- Tworzenie zasad przy użyciu rozwiązania Microsoft Copilot dla platformy Azure