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 dostawcę tożsamości innego niż Microsoft Entra, usługa API Management udostępnia również ogólne validate-jwt
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, "https://contoso.onmicrosoft.com") of the Microsoft Entra ID tenant"
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 Microsoft Entra</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 Microsoft Entra</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>
<decryption-keys>
<key certificate-id="mycertificate"/>
<!-- if there are multiple keys, then add additional key elements -->
</decryption-keys>
</validate-azure-ad-token>
Atrybuty
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
tenant-id | Identyfikator dzierżawy lub adres URL dzierżawy microsoft Entra ID lub jeden z następujących dobrze znanych dzierżaw: - organizations lub https://login.microsoftonline.com/organizations — aby zezwolić na tokeny z kont w dowolnym katalogu organizacyjnym (dowolny katalog firmy Microsoft Entra)- common lub https://login.microsoftonline.com/common — aby zezwolić na tokeny z kont w dowolnym katalogu organizacyjnym (dowolnym katalogu Microsoft Entra) i z osobistych kont Microsoft (na przykład Skype, XBox)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 | Struna. 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. |
odszyfrowywanie kluczy | Lista podelementów używana do odszyfrowywania tokenu key podpisanego przy użyciu klucza asymetrycznego. Jeśli istnieje wiele kluczy, każdy klucz jest sprawdzany do momentu wyczerpania wszystkich kluczy (w tym przypadku walidacja zakończy się niepowodzeniem) lub klucz zakończy się powodzeniem.Określ klucz publiczny przy użyciu certificate-id atrybutu z wartością ustawioną na identyfikator certyfikatu przekazanego do usługi API Management. |
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 | Struna. 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 |
atrybuty klucza
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
identyfikator certyfikatu | Identyfikator jednostki certyfikatu przekazanej do usługi API Management, używany do określania klucza publicznego w celu zweryfikowania tokenu podpisanego przy użyciu klucza asymetrycznego. | Tak | 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, obszar roboczy
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
. Identyfikator dzierżawy firmy Microsoft to dobrze znana organizations
dzierżawa, która umożliwia tokeny z kont w dowolnym katalogu organizacyjnym. Nazwa hosta jest udostępniana przy użyciu wyrażenia zasad, a identyfikator aplikacji klienckiej jest dostarczany przy użyciu nazwanej 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="organizations" 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
- Zestaw narzędzi zasad usługi Azure API Management
- Tworzenie zasad przy użyciu rozwiązania Microsoft Copilot na platformie Azure