Hitelesítési események eseményindítója Azure Functions Node-ügyfélkódtárhoz
Az Azure Functions hitelesítési eseményindítója kezeli az összes háttérfeldolgozást (például token/json sémaérvényesítést) a hitelesítési események bejövő HTTP-kérelmeihez. A fejlesztőnek pedig egy erősen gépelt, verziószámozott objektummodellt biztosít, amellyel dolgozhat, ami azt jelenti, hogy a fejlesztőnek nem kell előzetes ismeretekkel rendelkeznie a kérelem és a válasz json hasznos adatairól.
Ez a projekt-keretrendszer a következő funkciókat biztosítja:
- Jogkivonat-ellenőrzés az API-hívás biztonságossá tételéhez
- Objektummodell, gépelés és IDE intellisense
- Az API-kérés- és válaszsémák bejövő és kimenő ellenőrzése
- Verziókezelés
- Nincs szükség sablonkódra.
Első lépések
Az npm-csomag telepítése
npm install @azure/functions-authentication-events
Előfeltételek
- Azure-függvényeszközök
- Azure Function Core-eszközök
- A Visual Studio Code használata esetén a következő bővítmények:
Az ügyfél hitelesítése
Amikor Azure AD hitelesítési események szolgáltatás meghívja az egyéni bővítményt, egy Authorization
fejlécet küld a Bearer {token}
következővel: . Ez a jogkivonat egy szolgáltatáshitelesítési szolgáltatást jelöl, amelyben:
- Az "erőforrás", más néven a célközönség az az alkalmazás, amelyet regisztrál az API-jának megjelenítéséhez. Ezt a jogkivonatban szereplő
aud
jogcím jelöli. - Az "ügyfél" egy Microsoft-alkalmazás, amely a Azure AD hitelesítési eseményszolgáltatást jelöli.
appId
Értéke99045fe1-7639-4a75-9d4a-577b6ca3810f
. Ezt a következő képviseli:- A
azp
jogkivonatban szereplő jogcím, ha az alkalmazástulajdonságaccessTokenAcceptedVersion
értéke2
. - A
appid
jogkivonatban szereplő jogcím, ha az erőforrás-alkalmazás tulajdonságaaccessTokenAcceptedVersion
vagynull
értékre1
van állítva.
- A
A jogkivonat kezelésének három megközelítése van. A viselkedést az alább látható alkalmazásbeállítások használatával vagy a local.settings.json fájlon keresztül testre szabhatja a helyi környezetekben.
Jogkivonatok ellenőrzése Azure Functions Azure AD hitelesítési integrációval
Ha éles környezetben futtatja a függvényt, erősen ajánlott a Azure Functions Azure AD hitelesítési integrációt használni a bejövő jogkivonatok érvényesítéséhez.
- Nyissa meg a "Hitelesítés" lapot a függvényalkalmazásban
- Kattintson az "Identitásszolgáltató hozzáadása" elemre
- Identitásszolgáltatóként válassza a "Microsoft" lehetőséget
- Válassza a "Meglévő alkalmazásregisztráció részleteinek megadása" lehetőséget.
- Adja meg annak az alkalmazásnak az
Application ID
alkalmazását, amely az API-t képviseli a Azure AD
A kiállító és az engedélyezett célközönség az accessTokenAcceptedVersion
alkalmazás tulajdonságától függ (az alkalmazás jegyzékfájljában található).
Ha a accessTokenAcceptedVersion
tulajdonság 2
értéke: 6. Állítsa be az Issuer URL to "https://login.microsoftonline.com/{tenantId}/v2.0" 7. Set an 'Allowed Audience' to the Application ID (
appId')
Ha a accessTokenAcceptedVersion
tulajdonság értéke 1
vagy null
: 6. Egyéni tartománynév használata esetén állítsa be az Issuer URL to "https://sts.windows.net/{tenantId}/" 7. Set an 'Allowed Audience' to the Application ID URI (also known as
identifierUri). It should be in the format of
api://{azureFunctionAppName}.azurewebsites.net/{resourceApiAppId}or
api://{FunctionAppFullyQualifiedDomainName}/{resourceApiAppId}' értéket.
Alapértelmezés szerint a hitelesítési eseményindító ellenőrzi, hogy az Azure-függvény hitelesítési integrációja konfigurálva van-e, és ellenőrzi, hogy a jogkivonatban lévő ügyfél értéke (a jogkivonaton vagy appid
jogcímen azp
keresztül) van-e beállítva 99045fe1-7639-4a75-9d4a-577b6ca3810f
.
Ha olyan ügyfélen szeretné tesztelni az API-t, amely nem Azure AD hitelesítési események szolgáltatása, például a Postman használatával, konfigurálhat egy választható alkalmazásbeállítást:
- AuthenticationEvents__CustomCallerAppId – a kívánt ügyfél guid azonosítója. Ha nincs megadva,
99045fe1-7639-4a75-9d4a-577b6ca3810f
feltételezzük.
Az eseményindító érvényesítése a jogkivonattal
Az azure-függvényszolgáltatásban nem üzemeltetett helyi környezetekben vagy környezetekben az eseményindító elvégezheti a jogkivonat-ellenőrzést. Adja meg a következő alkalmazásbeállításokat:
- AuthenticationEvents__TenantId – a bérlő azonosítója
- AuthenticationEvents__AudienceAppId – ugyanaz az érték, mint az 1. lehetőség "Engedélyezett célközönség" értéke.
- AuthenticationEvents__CustomCallerAppId (nem kötelező) – a kívánt ügyfél guid azonosítója. Ha nincs megadva,
99045fe1-7639-4a75-9d4a-577b6ca3810f
feltételezzük.
Példafájl local.settings.json
:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"AuthenticationEvents__TenantId": "8615397b-****-****-****-********06c8",
"AuthenticationEvents__AudienceAppId": "api://46f98993-****-****-****-********0038",
"AuthenticationEvents__CustomCallerAppId": "46f98993-****-****-****-********0038"
}
}
Nincs jogkivonat-ellenőrzés
Ha nem szeretné hitelesíteni a jogkivonatot a helyi fejlesztés során, állítsa be a következő alkalmazásbeállítást:
- AuthenticationEvents__BypassTokenValidation – értéke
true
miatt az eseményindító nem ellenőrzi a jogkivonat érvényesítését.
Gyorsútmutató
- Visual Studio Code
- A Visual Studio Code elindítása
- A terminálparancs
func init . --worker-runtime node
futtatása a parancskatalóguson keresztül - A terminálparancs
func new
futtatása a parancskatalóguson keresztül - Kövesse a projektlétrehozásra vonatkozó utasításokat
- A terminálparancs
npm install @azure/functions-authentication-events
futtatása a parancskatalóguson keresztül - A terminálparancs
npm install
futtatása a parancskatalóguson keresztül - A terminálparancs
npm run-script build
futtatása a parancskatalóguson keresztül
- A teszteléshez szükséges jogkivonat-ellenőrzés fejlesztési célú fordulója:
- Adja hozzá a AuthenticationEvents__BypassTokenValidation alkalmazáskulcsot a local.settings.json fájl "Értékek" szakaszához, és állítsa igaz értékre. Ha nem rendelkezik local.settings.json fájllal a helyi környezetben, hozzon létre egyet a függvényalkalmazás gyökerében.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "node",
"AuthenticationEvents__BypassTokenValidation": true
}
}
- A projekt betöltése után futtathatja a mintakódot, és látnia kell, hogy az Azure Functions-fejlesztő alkalmazása betölti a végpontot.
Fő fogalmak
Az Azure .NET SDK fő fogalmai itt találhatók
Dokumentáció
Az egyik függvényt közzétették, van néhány jó olvasmány a naplózásról és a metrikákról, amelyek itt találhatók
Az API dokumentációját a (Link TBD) című témakörben találja.
Ha ez az előzetes verzióra kerül, kivéve a kompatibilitástörő módosításokat, és egyszerűen eltávolítjuk a privát előzetes verzióra mutató nuget-forrást.
Példák
A jogkivonat-bővítés teszteléséhez tegye a következőket.
- Nyissa meg az előző lépésben létrehozott projektet. (Rövid útmutató)
- Futtassa az alkalmazást.
func host start
- Az Azure Functions fejlesztői alkalmazásának elindítása után másolja ki az alkalmazás indításakor megjelenő figyelési URL-címet.
- Megjegyzés: Minden hitelesítési függvény szerepel a listában, abban az esetben, ha egy függvényfigyelő regisztrálva van az "OnTokenIssuanceStart" néven.
- A függvényvégpont ezután a figyelési URL-cím és a függvény kombinációja lesz, például: "http://localhost:7071/runtime/webhooks/AuthenticationEvents?code=(YOUR_CODE)& function=OnTokenIssuanceStart"
- Tegye közzé a következő hasznos adatokat a Postman vagy a Fiddler használatával.
- A Postman használatának lépései megtalálhatók (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"
}
}
}
}
- A következő választ kell látnia:
{
"data": {
"@odata.type": "microsoft.graph.onTokenIssuanceStartResponseData",
"actions": [
{
"@odata.type": "ProvideClaimsForToken",
"claims": [
{
"DateOfBirth": "01/01/2000"
},
{
"CustomRoles": [
"Writer",
"Editor"
]
}
]
}
]
}
}
Hibaelhárítás
- Visual Studio Code
- Ha a Visual Studio Code-ban fut, hibaüzenet jelenik meg a helyi Azure Storage Emulator sorai mentén, és manuálisan indíthatja el az emulátort.! (Megjegyzés: Az Azure Storage emulátor elavult, és a javasolt csere az Azurite)
- Ha a Visual Studio Code-ot macen használja, használja az Azurite-ot
- Ha a következő hibaüzenet jelenik meg a Windowsban (ez egy hiba), amikor megpróbálja futtatni a létrehozott kivetített fájlt.
- Ezt úgy oldhatja meg, hogy végrehajtja ezt a parancsot a PowerShellben
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
. Erről itt ésitt talál további információt.
Következő lépések
Az Azure SDK-val kapcsolatos további információkért tekintse meg ezt a webhelyet.
Közzététel
- Kövesse az itt található utasításokat a Azure-alkalmazás létrehozásához és közzétételéhez. </azure/azure-functions/functions-develop-vs?tabs=in-process#publish-to-azure>
- A közzétett közzétételi végpont meghatározásához kombinálja a létrehozott Azure-függvényvégpontot, irányt a figyelőhöz és a figyelő kódjához. A figyelőkód az Azure-függvényalkalmazásban való navigálással, az "Alkalmazáskulcsok" kiválasztásával és a AuthenticationEvents_extension értékének másolásával érhető el.
- Például: "https://azureautheventstriggerdemo.azurewebsites.net/runtime/webhooks/AuthenticationEvents?code=(AuthenticationEvents_extension_key)& function=OnTokenIssuanceStart"
- Győződjön meg arról, hogy az éles környezetben a megfelelő alkalmazásbeállítások vannak megadva a jogkivonat-hitelesítéshez.
- Ismét tesztelheti a közzétett függvényt, ha a fenti hasznos adatokat közzéteszi az új végponton.
Közreműködés
Az adattárhoz való hozzájárulás részleteiért tekintse meg a közreműködői útmutatót.
A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. További részletekért lásd: https://cla.microsoft.com.
A lekéréses kérelmek elküldésekor egy CLA-robot automatikusan meghatározza, hogy kell-e biztosítania CLA-t, és megfelelően kitölti a lekéréses kérelmet (például címke, megjegyzés). Egyszerűen csak kövesse a robot által megadott utasításokat. Ezt csak egyszer kell elvégeznie az összes adattárban a CLA használatával.
A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért lásd a viselkedési szabályzattal kapcsolatos gyakori kérdéseket , vagy vegye fel a kapcsolatot opencode@microsoft.com az esetleges további kérdésekkel vagy megjegyzésekkel.
Azure SDK for JavaScript