Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wyzwalacz zdarzenia uwierzytelniania dla Azure Functions obsługuje wszystkie operacje przetwarzania zaplecza (np. weryfikację schematu tokenu/json) dla przychodzących żądań HTTP dla zdarzeń uwierzytelniania. Zapewnia deweloperowi silnie typizowanego, wersjonowanego modelu obiektów do pracy, co oznacza, że deweloper nie musi mieć żadnej wcześniejszej wiedzy na temat ładunków żądania i odpowiedzi w formacie JSON.
Ta struktura projektu udostępnia następujące funkcje:
- Weryfikacja tokenu na potrzeby zabezpieczania wywołania interfejsu API
- Model obiektów, wpisywanie i intellisense środowiska IDE
- Weryfikacja przychodzących i wychodzących schematów żądań i odpowiedzi interfejsu API
- Przechowywanie wersji
- Nie ma potrzeby standardowego kodu.
Wprowadzenie
Instalowanie pakietu npm
npm install @azure/functions-authentication-events
Wymagania wstępne
- Narzędzia funkcji platformy Azure
- Podstawowe narzędzia funkcji platformy Azure
- W przypadku korzystania z Visual Studio Code następujących rozszerzeń:
Uwierzytelnianie klienta
Gdy usługa zdarzeń uwierzytelniania Azure AD wywołuje rozszerzenie niestandardowe, wyśle Authorization
nagłówek z .Bearer {token}
Ten token będzie reprezentować usługę uwierzytelniania usługi , w której:
- "zasób", znany również jako odbiorcy, to aplikacja zarejestrowana w celu reprezentowania interfejsu API. Jest to reprezentowane
aud
przez oświadczenie w tokenie. - "Klient" to aplikacja firmy Microsoft reprezentująca usługę zdarzeń uwierzytelniania Azure AD. Ma
appId
wartość99045fe1-7639-4a75-9d4a-577b6ca3810f
. Jest to reprezentowane przez:- Oświadczenie
azp
w tokenie, jeśli właściwość aplikacjiaccessTokenAcceptedVersion
jest ustawiona na2
wartość . - Oświadczenie
appid
w tokenie, jeśli właściwość aplikacji zasobu jest ustawionaaccessTokenAcceptedVersion
na1
wartość lubnull
.
- Oświadczenie
Istnieją trzy podejścia do radzenia sobie z tokenem. Zachowanie można dostosować przy użyciu ustawień aplikacji , jak pokazano poniżej lub za pośrednictwem pliku local.settings.json w środowiskach lokalnych.
Weryfikowanie tokenów przy użyciu integracji uwierzytelniania Azure Functions Azure AD
Podczas uruchamiania funkcji w środowisku produkcyjnym zdecydowanie zaleca się użycie integracji uwierzytelniania Azure Functions Azure AD do weryfikacji tokenów przychodzących.
- Przejdź do karty "Uwierzytelnianie" w aplikacji funkcji
- Kliknij pozycję "Dodaj dostawcę tożsamości"
- Wybierz pozycję "Microsoft" jako dostawcę tożsamości
- Wybierz pozycję "Podaj szczegóły istniejącej rejestracji aplikacji"
Application ID
Wprowadź aplikację reprezentującą interfejs API w Azure AD
Wystawca i dozwoloni odbiorcy zależą od accessTokenAcceptedVersion
właściwości aplikacji (można je znaleźć w "Manifeście" aplikacji).
Jeśli właściwość jest ustawiona accessTokenAcceptedVersion
na 2
wartość : 6. Ustaw identyfikator Issuer URL to "https://login.microsoftonline.com/{tenantId}/v2.0" 7. Set an 'Allowed Audience' to the Application ID (
appId')
accessTokenAcceptedVersion
Jeśli właściwość jest ustawiona na 1
wartość lub null
: 6. Ustaw Issuer URL to "https://sts.windows.net/{tenantId}/" 7. Set an 'Allowed Audience' to the Application ID URI (also known as
identyfikatorUri). It should be in the format of
api://{azureFunctionAppName}.azurewebsites.net/{resourceApiAppId}or
api://{FunctionAppFullyQualifiedDomainName}/{resourceApiAppId}, jeśli używasz niestandardowej nazwy domeny.
Domyślnie wyzwalacz zdarzenia uwierzytelniania zweryfikuje, czy jest skonfigurowana integracja uwierzytelniania funkcji platformy Azure i sprawdzi, czy klient w tokenie jest ustawiony na 99045fe1-7639-4a75-9d4a-577b6ca3810f
wartość (za pośrednictwem azp
oświadczeń lub appid
w tokenie).
Jeśli chcesz przetestować interfejs API na innym kliencie, który nie jest Azure AD usługi zdarzeń uwierzytelniania, na przykład przy użyciu narzędzia Postman, możesz skonfigurować opcjonalne ustawienie aplikacji:
- AuthenticationEvents__CustomCallerAppId — identyfikator GUID żądanego klienta. Jeśli nie zostanie podana, przyjmuje się założenie
99045fe1-7639-4a75-9d4a-577b6ca3810f
.
Sprawdzanie poprawności tokenu przez wyzwalacz
W środowiskach lokalnych lub środowiskach, które nie są hostowane w usłudze funkcji platformy Azure, wyzwalacz może przeprowadzić walidację tokenu. Ustaw następujące ustawienia aplikacji:
- AuthenticationEvents__TenantId — identyfikator dzierżawy
- AuthenticationEvents__AudienceAppId — ta sama wartość co "Dozwolona publiczność" w opcji 1.
- AuthenticationEvents__CustomCallerAppId (opcjonalnie) — identyfikator GUID żądanego klienta. Jeśli nie zostanie podana, przyjmuje się założenie
99045fe1-7639-4a75-9d4a-577b6ca3810f
.
Przykładowy local.settings.json
plik:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"AuthenticationEvents__TenantId": "8615397b-****-****-****-********06c8",
"AuthenticationEvents__AudienceAppId": "api://46f98993-****-****-****-********0038",
"AuthenticationEvents__CustomCallerAppId": "46f98993-****-****-****-********0038"
}
}
Brak weryfikacji tokenu
Jeśli nie chcesz uwierzytelniać tokenu podczas programowania lokalnego, ustaw następujące ustawienie aplikacji:
- AuthenticationEvents__BypassTokenValidation — wartość parametru
true
spowoduje, że wyzwalacz nie będzie sprawdzany pod kątem weryfikacji tokenu.
Szybki start
- Visual Studio Code
- Uruchom program Visual Studio Code
- Uruchamianie polecenia
func init . --worker-runtime node
terminalu za pomocą palety poleceń - Uruchamianie polecenia
func new
terminalu za pomocą palety poleceń - Postępuj zgodnie z monitami tworzenia projektu
- Uruchamianie polecenia
npm install @azure/functions-authentication-events
terminalu za pomocą palety poleceń - Uruchamianie polecenia
npm install
terminalu za pomocą palety poleceń - Uruchamianie polecenia
npm run-script build
terminalu za pomocą palety poleceń
- W celu programowania weryfikacja tokenu na potrzeby testowania:
- Dodaj klucz aplikacji AuthenticationEvents__BypassTokenValidation do sekcji "Wartości" w pliku local.settings.json i ustaw dla niego wartość true. Jeśli nie masz pliku local.settings.json w środowisku lokalnym, utwórz go w katalogu głównym aplikacji funkcji.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "node",
"AuthenticationEvents__BypassTokenValidation": true
}
}
- Po załadowaniu projektu możesz uruchomić przykładowy kod. Aplikacja dewelopera usługi Azure Functions powinna załadować punkt końcowy.
Kluczowe pojęcia
Kluczowe pojęcia dotyczące zestawu Azure .NET SDK można znaleźć tutaj
Dokumentacja
Opublikowano jedną z funkcji. Istnieje kilka dobrych informacji na temat rejestrowania i metryk, które można znaleźć tutaj
Aby uzyskać dokumentację interfejsu API, zobacz (Link TBD)
Gdy przejdziemy do wersji zapoznawczej, z wyjątkiem zmian powodujących niezgodność i będzie tak proste, jak usunięcie źródła nuget wskazującego prywatną wersję zapoznawcza.
Przykłady
Aby przetestować rozszerzenie tokenu, wykonaj następujące czynności.
- Otwórz projekt utworzony w poprzednim kroku. (Szybki start)
- Uruchom aplikację.
func host start
- Po uruchomieniu aplikacji dewelopera usługi Azure Functions skopiuj adres URL nasłuchiwania wyświetlany podczas uruchamiania aplikacji.
- Uwaga: wszystkie funkcje uwierzytelniania są wyświetlane w przypadku, gdy mamy zarejestrowany jeden odbiornik funkcji o nazwie "OnTokenIssuanceStart"
- Punkt końcowy funkcji będzie wówczas kombinacją adresu URL nasłuchiwania i funkcji, na przykład: "http://localhost:7071/runtime/webhooks/AuthenticationEvents?code=(YOUR_CODE)& function=OnTokenIssuanceStart"
- Opublikuj następujący ładunek, używając czegoś takiego jak Postman lub Fiddler.
- Kroki dotyczące korzystania z narzędzia Postman można znaleźć (Link TBD)
{
"type": "microsoft.graph.authenticationEvent.tokenIssuanceStart",
"source": "/tenants/00000001-0000-0ff1-ce00-000000000000/applications/ef9e995c-efdb-4e76-97a9-8cdfc6e06afc",
"data": {
"@odata.type": "microsoft.graph.onTokenIssuanceStartCalloutData",
"tenantId": "00000001-0000-0ff1-ce00-000000000000",
"authenticationEventListenerId": "f2390d57-9664-4dde-b625-f0115925e1e2",
"customAuthenticationExtensionId": "9cc1c1ed-5f04-4fdf-85c0-94a7c6ea819c",
"authenticationContext": {
"correlationId": "f4bd1870-b774-4fa5-ba78-e08ac6be14c0",
"client": {
"ip": "127.0.0.1",
"locale": "en-us",
"market": "en-us"
},
"protocol": "OAUTH2.0",
"clientServicePrincipal": {
"id": "eedfddb9-304e-4d62-aa83-24700a0bcf0e",
"appId": "ef9e995c-efdb-4e76-97a9-8cdfc6e06afc",
"appDisplayName": "",
"displayName": "Test application"
},
"resourceServicePrincipal": {
"id": "eedfddb9-304e-4d62-aa83-24700a0bcf0e",
"appId": "ef9e995c-efdb-4e76-97a9-8cdfc6e06afc",
"appDisplayName": "",
"displayName": "Test application"
},
"user": {
"companyName": "Evo Sts Test",
"country": "",
"id": "69d24544-c420-4721-a4bf-106f2378d9f6",
"mail": "testadmin@evostsoneboxtest.com",
"onPremisesSamAccountName": "testadmin",
"onPremisesSecurityIdentifier": "testadmin",
"preferredDataLocation": "",
"userPrincipalName": "testadmin@evostsoneboxtest.com"
}
}
}
}
- Powinna zostać wyświetlona następująca odpowiedź:
{
"data": {
"@odata.type": "microsoft.graph.onTokenIssuanceStartResponseData",
"actions": [
{
"@odata.type": "ProvideClaimsForToken",
"claims": [
{
"DateOfBirth": "01/01/2000"
},
{
"CustomRoles": [
"Writer",
"Editor"
]
}
]
}
]
}
}
Rozwiązywanie problemów
- Visual Studio Code
- Jeśli uruchomiono polecenie w Visual Studio Code, w wierszach lokalnego emulatora usługi Azure Storage jest niedostępny, możesz uruchomić emulator ręcznie.! (Uwaga: emulator usługi Azure Storage jest teraz przestarzały, a sugerowane zastąpienie to Azurite)
- Jeśli używasz Visual Studio Code na komputerze Mac, użyj Azurite
- Jeśli podczas próby uruchomienia utworzonego projektu zostanie wyświetlony następujący błąd w systemie Windows (jest to usterka).
- Można to rozwiązać, wykonując to polecenie w programie PowerShell
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
więcej informacji na ten temat można znaleźć tutaj i tutaj
Następne kroki
Aby uzyskać więcej informacji na temat zestawu Azure SDK, zapoznaj się z tą witryną internetową
Publikowanie
- Postępuj zgodnie z instrukcjami podanymi tutaj, aby utworzyć i opublikować aplikacja systemu Azure. </azure/azure-functions/functions-develop-vs?tabs=in-process#publish-to-azure>
- Aby określić opublikowany punkt końcowy publikowania, połącz utworzony punkt końcowy funkcji platformy Azure, trasę do odbiornika i kodu odbiornika, kod nasłuchiwania można znaleźć, przechodząc do aplikacji funkcji platformy Azure, wybierając pozycję "Klucze aplikacji" i kopiując wartość AuthenticationEvents_extension.
- Na przykład: "https://azureautheventstriggerdemo.azurewebsites.net/runtime/webhooks/AuthenticationEvents?code=(AuthenticationEvents_extension_key)& function=OnTokenIssuanceStart"
- Upewnij się, że środowisko produkcyjne ma poprawne ustawienia aplikacji na potrzeby uwierzytelniania tokenu.
- Po raz kolejny możesz przetestować opublikowaną funkcję, publikując powyższy ładunek w nowym punkcie końcowym.
Współtworzenie
Aby uzyskać szczegółowe informacje na temat współtworzenia tego repozytorium, zobacz przewodnik współtworzenia.
W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź stronę https://cla.microsoft.com.
Po przesłaniu żądania ściągnięcia robot CLA automatycznie określi, czy musisz przekazać umowę CLA, i doda odpowiednie informacje do tego żądania (na przykład etykietę czy komentarz). Po prostu postępuj zgodnie z instrukcjami robota. Musisz to zrobić tylko raz we wszystkich repozytoriach przy użyciu naszego cla.
W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące kodeksu postępowania lub skontaktuj się z opencode@microsoft.com dodatkowymi pytaniami lub komentarzami.
Azure SDK for JavaScript