Oefening: multitenant-gegevens implementeren
In deze oefening doorloopt u het volgende:
- Azure Database for PostgreSQL installeren in het serverimplementatiemodel.
- Een database maken met voorbeeldinventarisgegevens.
- De server integreren met Microsoft Entra-id.
- Het implementeren van een eenvoudige Node.js-gebaseerde toepassing die een query op de database uitvoert door te vertrouwen op Microsoft Entra-verificatie.
Notitie
Deze oefening illustreert een vereenvoudigde benadering voor het bieden van ondersteuning voor meerdere tenants door de multitenancy-functionaliteit van het Azure Database for the PostgreSQL Hyperscale-implementatiemodel te emuleren. Het biedt ook een vereenvoudigde benadering voor het implementeren van Microsoft Entra-verificatie in scenario's met meerdere tenants door te vertrouwen op de Microsoft Entra B2B-functionaliteit. Microsoft Entra ID biedt rechtstreeks ondersteuning voor multitenant-toepassingen, maar hun gedetailleerde dekking valt buiten het bereik van deze module.
In deze oefening gaat u het volgende doen:
- Maak een exemplaar van een Azure Database for PostgreSQL-server.
- Maak verbinding met de Azure Database for PostgreSQL-server.
- Maak een database en voorbeeldtabellen.
- Integreer de Azure Database for PostgreSQL-server met Microsoft Entra-id.
- Een toepassing registreren bij Microsoft Entra ID.
- Implementeer een eenvoudige, geïntegreerde microsoft Entra-toepassing op basis van Node.js.
- Valideer de functionaliteit van de op Node.js gebaseerde toepassing.
Vereisten
Als u deze oefening wilt uitvoeren, hebt u het volgende nodig:
- Een Azure-abonnement.
- Een Microsoft-account of een Microsoft Entra-account met de rol Globale beheerder in de Microsoft Entra-tenant die is gekoppeld aan het Azure-abonnement en met de rol Eigenaar of Inzender in het Azure-abonnement.
- Als u de eerste oefening van deze module wilt hebben voltooid.
Een exemplaar van een Azure Database for PostgreSQL-server maken
U begint met het maken van een exemplaar van azure Database for PostgreSQL-server:
Start zo nodig een webbrowser, navigeer naar Azure Portal en meld u aan voor toegang tot het Azure-abonnement dat u in deze module gaat gebruiken.
Gebruik het tekstvak Resources, services en documenten zoeken aan het begin van de Azure-portalpagina om te zoeken naar Azure Database for PostgreSQL en selecteer In de sectie Services de optie Azure Database for PostgreSQL in de lijst met resultaten.
Selecteer + Maken op de blade Azure Database for PostgreSQL-servers.
Selecteer op de blade Implementatieoptie Azure Database for PostgreSQL selecteren op de tegel Azure Database for PostgreSQL voor resourcetype Enkele server.
Selecteer Maken.
Configureer op het tabblad Basisbeginselen van de blade Enkele server de volgende instellingen en selecteer Vervolgens Controleren en maken, terwijl u alle andere instellingen met de standaardwaarden laat staan:
Instelling Configuratie Abonnement Selecteer de naam van het Azure-abonnement dat u in deze module gaat gebruiken. Resourcegroep Maak een nieuwe resourcegroep met de naam postgresql-db-RG. Servernaam Voer een unieke naam in die bestaat uit kleine letters, cijfers of streepjes en begin met een letter. Gegevensbron Selecteer Geen. Locatie Selecteer de Azure-regio die zich het dichtst bij de locatie van uw testomgeving bevindt, waar u Azure Database for PostgreSQL-exemplaren kunt maken. Versie Selecteer 11. Berekening en opslag Selecteer de koppeling Server configureren. Selecteer Basic op de blade Configureren, stel de vCore-waarde in op 1 en Opslag op 5 GB en selecteer vervolgens OK. Gebruikersnaam van beheerder Voer de leerling/student in. Wachtwoord Voer een <password>
.Selecteer Maken op het tabblad Controleren en maken van de blade Eén server.
Wacht totdat de inrichting is voltooid. Dit kan ongeveer vijf minuten duren.
Notitie
Het inrichtingsproces maakt automatisch een database met de naam postgres binnen de doelserver.
Verbinding maken met de Azure Database for PostgreSQL-server
Wanneer de Azure Database for PostgreSQL-server is ingericht, maakt u er verbinding mee met behulp van het hulpprogramma psql .
Selecteer in de blade Overzicht van Microsoft.PostgreSQLServer.createPostgreSqlServer de optie Ga naar de resource.
Selecteer op de blade Implementatie in het verticale menu in de sectie Instellingen de optie Verbindingsbeveiliging.
Stel op de blade Verbindingsbeveiliging de optie Toegang tot Azure-services toestaan in op Ja, selecteer + IP-adres van client toevoegen, stel SSL-verbinding afdwingen in op UITGESCHAKELD en selecteer Vervolgens Opslaan.
Notitie
Met deze instellingen kunt u verbinding maken met de database vanaf uw computer en vanuit toepassingen die worden uitgevoerd in Azure.
Notitie
Het uitschakelen van de SSL-afdwinging is bedoeld om de volgende oefeningen te vereenvoudigen. Over het algemeen moet u deze instelling ingeschakeld houden.
Selecteer Overzicht in het browservenster waarin De Azure-portal wordt weergegeven met de blade Implementatie in het verticale menu.
Identificeer in de sectie Essentials de vermeldingen naast de labels servernaam en gebruikersnaam van de beheerder en noteer hun waarden.
Notitie
De gebruikersnaam bevat het @ symbool gevolgd door de servernaam die u in de vorige taak hebt opgegeven.
Selecteer verbindingsreeksen in het browservenster met de blade Azure Database for PostgreSQL met één server in het verticale menu, in de sectie Instellingen, verbindingsreeksen.
Kopieer in de lijst met verbindingsreeks s de waarde van de psql-verbindingsreeks en noteer deze, zodat u deze later in deze oefening kunt gebruiken.
Notitie
De verbindingsreeks heeft de volgende syntaxis, waarbij de
<server_name>
tijdelijke aanduiding de naam vertegenwoordigt van de server die u eerder in deze taak hebt geïdentificeerd:psql "host=<server_name>.postgres.database.azure.com port=5432 dbname={your_database} user=student@<server_name> password={your_password} sslmode=require"
Open in Azure Portal een Bash-sessie van de Cloud Shell door het bijbehorende pictogram in de werkbalk naast het zoektekstvak te selecteren.
Plak in de Bash-sessie in het deelvenster Cloud Shell de waarde van de psql-verbindingsreeks vanaf het klembord, wijzig deze zodat deze overeenkomt met de volgende opdracht en voer deze uit om verbinding te maken met de postgres-database die wordt gehost op het zojuist geïmplementeerde serverexemplementatie van Azure Database for PostgreSQL. De waarde van de
<server_name>
tijdelijke aanduiding wordt al opgenomen in de verbindingsreeks die u vanaf het klembord hebt geplakt:psql "host=<server_name>.postgres.database.azure.com port=5432 dbname=postgres user=student@<server_name>.postgres.database.azure.com password=<enter your password> sslmode=require"
Notitie
Wanneer u verbinding maakt, krijgt u de
postgres=>
prompt te zien.
Een database en voorbeeldtabellen maken
Voer in het deelvenster Cloud Shell vanaf de prompt de volgende opdracht uit om een nieuwe database met de
postgres=>
naam cnamtinventory te maken:CREATE DATABASE cnamtinventory;
Voer de volgende opdracht uit om de verbinding met de zojuist gemaakte database over te schakelen:
\c cnamtinventory
Voer de volgende opdracht uit om een tenanttabel te maken:
CREATE TABLE tenants ( id bigserial PRIMARY KEY, name text NOT NULL, created_at TIMESTAMP DEFAULT NOW()::date, updated_at TIMESTAMP DEFAULT NOW()::date );
Voer de volgende opdracht uit om een inventaristabel te maken:
CREATE TABLE inventory ( id bigserial, tenant_id bigint REFERENCES tenants (id), name VARCHAR(50), quantity INTEGER, date DATE NOT NULL DEFAULT NOW()::date, created_at TIMESTAMP DEFAULT NOW()::date, updated_at TIMESTAMP DEFAULT NOW()::date, PRIMARY KEY (tenant_id, id, date) ) PARTITION BY RANGE (date); CREATE TABLE inventory_default PARTITION OF inventory DEFAULT;
Notitie
De gegevens worden gepartitioneerd op basis van de waarde van de datumkolom.
Voer de volgende opdracht uit om te controleren of de tabel is gemaakt:
\dt
Voer de volgende opdracht uit om voorbeeldgegevens in de tenanttabel te laden:
INSERT INTO tenants (id, name) VALUES (1, 'adatum'); INSERT INTO tenants (id, name) VALUES (2, 'contoso');
Voer de volgende opdracht uit om voorbeeldgegevens in de inventaristabel te laden:
INSERT INTO inventory (id, tenant_id, name, quantity) VALUES (1, 1, 'yogurt', 200); INSERT INTO inventory (id, tenant_id, name, quantity) VALUES (2, 1, 'milk', 100); INSERT INTO inventory (id, tenant_id, name, quantity) VALUES (1, 2, 'yogurt', 20); INSERT INTO inventory (id, tenant_id, name, quantity) VALUES (2, 2, 'milk', 10);
Voer de volgende opdracht uit om te controleren of de inventaristabel de gegevens bevat die u hebt ingevoegd:
SELECT * FROM inventory;
Sluit het deelvenster Cloud Shell .
De Azure Database for PostgreSQL-server integreren met Microsoft Entra ID
Als u het Azure Database for PostgreSQL-serverexemplaren wilt integreren met Microsoft Entra ID, moet u een Microsoft Entra-gebruikersaccount opgeven als de aangewezen Active Directory-beheerder van de server. Hiervoor gebruikt u het adatumadmin1-gebruikersaccount dat u in de vorige taak hebt gemaakt. U moet zich aanmelden bij de server met dat gebruikersaccount. Op dat moment kunt u op Microsoft Entra ID gebaseerde databasegebruikers maken en aan hen databaserollen toewijzen. U gebruikt voor de adatumuser1-, adatumgroup1- en contosouser1 Microsoft Entra-objecten die u in de vorige oefening hebt gemaakt.
Selecteer in het browservenster met azure Portal met de blade Azure Database for PostgreSQL-server in het verticale menu, in de sectie Instellingen, Active Directory-beheerder en selecteer vervolgens op de werkbalk De beheerder instellen.
Selecteer op de blade Active Directory-beheerder in de lijst met Microsoft Entra-gebruikersaccounts het adatumadmin1-gebruikersaccount dat u in de vorige oefening hebt gemaakt, selecteer Selecteren en selecteer Vervolgens Opslaan.
Open een ander browservenster in de Incognito-/InPrivate-modus, navigeer naar Azure Portal en meld u aan met het adatumadmin1-gebruikersaccount met het wachtwoord dat u in de vorige oefening hebt gemaakt.
Open de Cloud Shell in Azure Portal door het bijbehorende pictogram in de werkbalk naast het zoekvak te selecteren.
Wanneer u wordt gevraagd om Bash of PowerShell te selecteren, selecteert u Bash en selecteert u vervolgens Bash wanneer het bericht Wordt weergegeven dat er geen opslag is gekoppeld, selecteert u Opslag maken.
Voer in de Bash-sessie in het deelvenster Cloud Shell de volgende opdrachten uit om een Microsoft Entra-toegangstoken op te halen en weer te geven dat is vereist voor toegang tot Azure Database for PostgreSQL:
FULL_TOKEN=$(az account get-access-token --resource-type oss-rdbms) echo $FULL_TOKEN
Notitie
Met de opdracht wordt een uitvoer gegenereerd die een met Base 64 gecodeerd token bevat, waarmee de geverifieerde gebruiker wordt geïdentificeerd voor de Azure Database for PostgreSQL-resource.
De uitvoer gebruikt de volgende indeling:
{ "accessToken": "<placeholder for token value>", "expiresOn": "2021-05-21 18:22:44.000000", "subscription": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "tenant": "eeeeffff-4444-aaaa-5555-bbbb6666cccc", "tokenType": "Bearer" }
Voer de volgende opdracht uit om de waarde van de PGPASSWORD-variabele in te stellen op de waarde van het toegangstoken vanuit de uitvoer van de opdracht die u in de vorige stap hebt uitgevoerd:
export PGPASSWORD=$(echo $FULL_TOKEN | jq -r '.accessToken')
Voer de volgende opdracht uit om verbinding te maken met de cnamtinventory-database met behulp van het hulpprogramma psql en met behulp van Microsoft Entra-verificatie (vervang de
<server_name>
tijdelijke aanduiding door de naam van de server die u eerder in deze oefening hebt geïdentificeerd):DOMAIN_NAME=$(az rest --method GET --url 'https://management.azure.com/tenants?api-version=2020-01-01' --query "value[0].defaultDomain" -o tsv) psql "host=<server_name>.postgres.database.azure.com user=adatumadmin1@$DOMAIN_NAME@<server_name> dbname=cnamtinventory sslmode=require"
Notitie
Wanneer u verbinding maakt, wordt de
cnamtinventory=>
prompt weergegeven.Voer vanaf de
cnamtinventory=>
prompt de volgende opdracht uit om een databaserol te maken die overeenkomt met de microsoft Entra-groep adatumgroup1 die u in de vorige oefening hebt gemaakt:CREATE ROLE "adatumgroup1" WITH LOGIN IN ROLE azure_ad_user;
Voer de volgende opdracht uit om te controleren of de rollen zijn gemaakt:
SELECT rolname FROM pg_roles;
Voer de volgende opdracht uit om de SELECT-machtigingen voor de inventaristabel toe te kennen aan de adatumgroup1 die u in de vorige oefening hebt gemaakt:
GRANT SELECT ON inventory TO adatumgroup1;
Meld u af als het adatumadmin1-gebruikersaccount en sluit het webbrowservenster Incognito/InPrivate-modus.
Een toepassing registreren bij Microsoft Entra-id
Als u een voorbeeldtoepassing op basis van Node.js wilt implementeren die gebruikmaakt van Microsoft Entra-verificatie voor toegang tot een Azure Database for PostgreSQL-database, moet u een Microsoft Entra-toepassingsobject en de bijbehorende beveiligingsprincipal maken. Hierdoor kan de Node.js-gebaseerde toepassing Microsoft Entra-gebruikers imiteren bij het openen van databaseobjecten.
Gebruik in Azure Portal het tekstvak Zoekbronnen, services en documenten om naar Microsoft Entra-id te zoeken en selecteer Microsoft Entra-id in de lijst met resultaten.
Selecteer op de blade Microsoft Entra in het verticale menu in de sectie Beheren App-registraties.
Selecteer + Nieuwe registratie op de blade App-registraties.
Voer op de blade Een toepassing registreren in het tekstvak Naam de can-app in. Zorg ervoor dat in de sectie Ondersteunde accounttypen alleen de optie Accounts in deze organisatiemap (alleen standaardmap - één tenant) is geselecteerd. Stel in de sectie Omleidings-URI (optioneel) de webvermelding
http://localhost:8080/redirect
in op en selecteer Registreren.Notitie
U hebt de mogelijkheid om ondersteuning voor meerdere tenants te configureren voor uw geregistreerde Microsoft Entra-toepassingen. Gedetailleerde dekking van deze aanpak valt echter buiten het bereik van deze module.
Notitie
Nadat u uw toepassing hebt geïmplementeerd, moet u de omleidings-URI-waarde (optioneel) wijzigen om de werkelijke URL weer te geven.
Controleer op de blade Can-app de resulterende instellingen en noteer de waarden van de toepassings-id (client) en de eigenschappen directory-id (tenant).
Selecteer certificaten en geheimen op de blade Can-app in de sectie Beheren en selecteer + Nieuw clientgeheim.
Voer op de blade Een clientgeheim toevoegen, in het tekstvak Beschrijving, can-secret-0 in. Laat de vervolgkeuzelijst verlopen met de standaardwaarde staan en selecteer Toevoegen.
Terug in de can-app | Blade Certificaten en geheimen , kopieer de waarde van het zojuist gegenereerde geheim.
Notitie
Zorg ervoor dat u de waarde van het geheim kopieert voordat u van deze blade weg navigeert, omdat u het op dat moment niet meer kunt ophalen. Als dat gebeurt, maakt u nog een geheim.
In de can-app | Blade Certificaten en geheimen in het verticale menu, in de sectie Beheren , selecteer API-machtigingen.
In de can-app | Blade API-machtigingen, selecteer + Een machtiging toevoegen, selecteer op de blade Api-machtiging aanvragen de API's die mijn organisatie gebruikt, voer in het zoektekstvak Azure OSSRDBMS Database in en selecteer vervolgens Azure OSSRDBMS-database in de lijst met resultaten.
Selecteer op de blade Api-machtigingen aanvragen gedelegeerde machtigingen, schakel het selectievakje user_impersonation in en selecteer vervolgens Machtigingen toevoegen.
Terug in de can-app | Blade API-machtigingen , selecteer Beheerderstoestemming verlenen voor Standaardmap en selecteer Ja wanneer u om bevestiging wordt gevraagd.
In de can-app | Blade API-machtigingen , controleer of de machtigingen zijn verleend.
Een eenvoudige, op Microsoft Entra geïntegreerde Node.js-toepassing implementeren
Wanneer de toepassing is geregistreerd in de Microsoft Entra-tenant, kunt u nu doorgaan met de implementatie ervan.
Start in Azure Portal een Bash-sessie in Cloud Shell door het bijbehorende pictogram in de werkbalk naast het zoektekstvak te selecteren.
Voer in de Bash-sessie in het deelvenster Cloud Shell de volgende opdrachten uit om een Node.js project in een nieuwe map te initialiseren:
mkdir -p cna-aadexpress && cd cna-aadexpress npm init -y
Voer de volgende opdrachten uit om vereiste pakketten toe te voegen aan de afhankelijkheid van het project:
npm install express npm install pg npm install @azure/msal-node
Voer de volgende opdracht uit om een bestand met de naam index.js te maken in de hoofdmap van het project:
touch ./index.js
Gebruik de nano-editor om het bestand te openen index.js en voeg de volgende inhoud toe. U maakt later in deze les een app-naam om de tijdelijke aanduiding
<webapp_name>
te vervangen. Vervang<client_id>
,<tenant_id>
,<client_secret>
en<server_name>
(exclusief het.postgres.database.azure.com
achtervoegsel) door de werkelijke waarden die u eerder in deze oefening hebt genoteerd:Notitie
De tijdelijke aanduidingen
<client_id>
en<tenant_id>
komen overeen met de toepassings-id (client) en de eigenschappen van de map-id (tenant) waarnaar eerder in deze oefening is verwezen.// Import dependencies const express = require("express"); const msal = require('@azure/msal-node'); const pg = require('pg'); const port = process.env.PORT || 8080 // Initialize express const app = express(); app.use(express.json()); app.listen(port, () => console.log(`Sample app is listening on port ${port}!`)) // Authentication parameters const config = { auth: { clientId: "<client_id>", authority: "https://login.microsoftonline.com/<tenant_id>", clientSecret: "<client_secret>" }, system: { loggerOptions: { loggerCallback(loglevel, message, containsPii) { console.log(message); }, piiLoggingEnabled: false, logLevel: msal.LogLevel.Verbose, } } }; var outputrows = "" // Initialize MSAL Node object using authentication parameters const cca = new msal.ConfidentialClientApplication(config); app.get('/auth', (req, res) => { redirectUri = req.hostname.toLowerCase()=="localhost" ? "http://localhost:8080/redirect" : "https://<webapp_name>.azurewebsites.net/redirect"; // Construct a request object for auth code const authCodeUrlParameters = { scopes: ["https://ossrdbms-aad.database.windows.net/user_impersonation"], redirectUri: redirectUri, }; // Request auth code, then redirect cca.getAuthCodeUrl(authCodeUrlParameters) .then((response) => { res.redirect(response); }).catch((error) => res.send(error)); }); app.get('/redirect', (req, res) => { redirectUri = req.hostname.toLowerCase()=="localhost" ? "http://localhost:8080/redirect" : "https://<webapp_name>.azurewebsites.net/redirect"; // Use the auth code in redirect request to construct a token request object const tokenRequest = { code: req.query.code, scopes: ["https://ossrdbms-aad.database.windows.net/user_impersonation"], redirectUri: redirectUri, }; // Exchange the auth code for tokens cca.acquireTokenByCode(tokenRequest) .then((response) => { //res.send(response); var username = 'adatumgroup1'; var databasename = 'cnamtinventory'; var servername = '<server_name>'; var tablename = 'inventory'; process.env.PGPASSWORD = response.accessToken; const connectionString = `postgres://${username}@${servername}@${servername}.postgres.database.azure.com:5432/${databasename}?ssl=true`; res.write(connectionString + "\n\n"); res.write(response.accessToken + "\n\n"); const client = new pg.Client(connectionString); client.connect(err => { if (err) throw err; else { queryDatabase(response.account.name); } }); function queryDatabase(tenant_id) { console.log(`Running query to PostgreSQL server: ${servername}`); switch (tenant_id) { case "adatumuser1": id = "1"; break; case "contosouser1": id = "2"; break; } const query = `SELECT * FROM ${tablename} WHERE tenant_id = ${id};`; client.query(query) .then(qresponse => { const rows = qresponse.rows; rows.map(row => { var singlerow = `${JSON.stringify(row)}`; console.log(singlerow); outputrows += singlerow + "\n"; }); res.write(outputrows); res.end(); process.exit(); }) .catch(err => { console.log(err); }); } }).catch((error) => res.write(error)); });
Notitie
Een geregistreerde Microsoft Entra-toepassing met meerdere tenants maakt gebruik van de algemene instantie-URL
authority: "https://login.microsoftonline.com/common"
, maar in uw geval moet u een URL met één tenant gebruiken die uw tenant-id bevat.Notitie
Houd er rekening mee dat u, nadat u de toepassing hebt geïmplementeerd, de waarde van de OMLEIDINGS-URL moet vervangen door de werkelijke omleidings-URL.
Gebruik de nano-editor om het package.json-bestand in de hoofdmap van het project te bewerken en te vervangen door de volgende inhoud:
{ "name": "node-express", "version": "1.0.0", "description": "Node.js express sample", "main": "index.js", "scripts": { "start": "node index.js" }, "author": "", "license": "ISC", "dependencies": { "@azure/msal-node": "^1.1.0", "body-parser": "^1.19.0", "express": "^4.17.1", "http": "0.0.0", "morgan": "^1.10.0", "pg": "^8.6.0" } }
De functionaliteit van de toepassing op basis van Node.js valideren
U bent klaar om de functionaliteit van uw web-app te testen. Hoewel u deze in een container kunt zetten, implementeert u deze omwille van de eenvoud in een Azure-app Service. Dit biedt een snelle manier om de functionaliteit ervan te valideren en ervoor te zorgen dat containeriseren een haalbare optie is.
Voer in de Bash-sessie in het deelvenster Cloud Shell de volgende opdrachten uit om een resourcegroep te maken die als host fungeert voor de Azure-web-app, waarin u de Node.js Express-app implementeert:
RG1NAME=postgresql-db-RG LOCATION=$(az group show --resource-group $RG1NAME --query location --output tsv) RG2NAME=cna-aadexpress-RG az group create --name $RG2NAME --location $LOCATION
Voer de volgende opdrachten uit om een gratis Azure-app Service-plan te maken dat als host fungeert voor de nieuwe Azure-web-app:
SPNAME=aadexpress-sp az appservice plan create --name $SPNAME --resource-group $RG2NAME --sku F1 --is-linux
Voer de volgende opdrachten uit om de nieuwe op Node.js gebaseerde Azure-web-app te maken:
WEBAPPNAME=aadexpress$RANDOM$RANDOM az webapp create --name $WEBAPPNAME --resource-group $RG2NAME --plan $SPNAME --runtime "NODE|16-lts"
Voer de volgende opdrachten uit om de naam van de web-app te identificeren:
echo $WEBAPPNAME
Gebruik de nano-editor om het index.js-bestand te openen, twee
<webapp_name>
tijdelijke aanduidingen te vervangen door de naam die u in de vorige stap hebt geïdentificeerd, sla uw wijzigingen op en sluit het bestand.Notitie
Zorg ervoor dat u beide
<webapp_name>
tijdelijke aanduidingen vervangt.Open een ander tabblad in het browservenster met de Azure-portal, ga naar De Azure-portal en meld u, als u hierom wordt gevraagd, aan om toegang te krijgen tot het Azure-abonnement dat u in deze module gaat gebruiken.
Gebruik in Azure Portal het tekstvak Resources, services en documenten zoeken om naar Microsoft Entra-id te zoeken en selecteer in de lijst met resultaten Microsoft Entra-id.
Ga op de blade Microsoft Entra naar de blade App-registraties, selecteer in het verticale menu, in het verticale menu, in de sectie Beheren, verificatie.
In de can-app | De blade Verificatie , wijzig de waarde van de omleidings-URI zodat deze overeenkomt met de vermelding die u in het index.js-bestand hebt bijgewerkt en sla de wijziging op.
Ga terug naar het tabblad van de webbrowser met de Bash-sessie in het deelvenster Cloud Shell en voer de volgende opdrachten uit om de lokale Git-opslagplaats te initialiseren en alle wijzigingen in de hoofdvertakking door te voeren:
cd ~/cna-aadexpress git config --global user.email "user1@adatum.com" git config --global user.name "Adatum User1" git init git add -A git commit -m "Initial Commit"
Voer de volgende opdrachten uit om implementatiereferenties op gebruikersniveau in te stellen:
DEPLOYMENTUSER=m06User$RANDOM DEPLOYMENTPASS=m06Pass$RANDOM$RANDOM az webapp deployment user set --user-name $DEPLOYMENTUSER --password $DEPLOYMENTPASS
Voer de volgende opdrachten uit om de referenties voor implementatie op gebruikersniveau te identificeren en hun waarde vast te leggen, omdat u deze later in deze taak nodig hebt:
echo $DEPLOYMENTUSER echo $DEPLOYMENTPASS
Voer de volgende opdrachten uit om de IMPLEMENTATIE-URL van de Azure-web-app te identificeren die u als doel van de
git push
opdracht gaat gebruiken:RG2NAME=cna-aadexpress-RG WEBAPPNAME=$(az webapp list --resource-group $RG2NAME --query "[0].name" --output tsv) DEPLOYMENTURL=$(az webapp deployment source config-local-git --name $WEBAPPNAME --resource-group $RG2NAME --output tsv)
Voer de volgende opdracht uit om de externe opslagplaats met de naam Azure te configureren, die de implementatie-URL vertegenwoordigt die u in de vorige stap hebt geïdentificeerd:
git remote add azure $DEPLOYMENTURL
Voer de volgende opdrachten uit om de testvertakking te maken op basis van de hoofdvertakking en de inhoud ervan naar de Azure-web-app te pushen (wanneer u wordt gevraagd om het wachtwoord dat deel uitmaakt van de implementatiereferenties op gebruikersniveau die u eerder in deze taak hebt vastgelegd):
git checkout -b test git commit -a -m "testing" git push --set-upstream azure test
Sluit het deelvenster Cloud Shell .
Open een ander browservenster in de Incognito-/InPrivate-modus, navigeer naar Azure Portal en meld u aan met het adatumuser1-gebruikersaccount dat u in de vorige oefening hebt gemaakt.
Gebruik in Azure Portal het tekstvak Zoekbronnen, services en documenten aan het begin van de Azure-portalpagina om te zoeken naar App Services.
Selecteer op de blade App Services in de lijst met App Service-exemplaren de vermelding die de zojuist geïmplementeerde Azure-web-app vertegenwoordigt.
Kopieer op de blade met de eigenschappen van de web-app in de sectie Essentials de waarde van de standaarddomein-URL .
Open een ander tabblad in hetzelfde browservenster en voer in het zoekvak https:// in, plak de URL die u zojuist naar het klembord hebt gekopieerd, voeg het achtervoegsel /auth toe en selecteer Enter.
Notitie
De URL moet de volgende indeling hebben:
https://<webapp_name>.azurewebsites.net/auth
Controleer of de resulterende webpagina bestaat uit de verificatiegegevens van Microsoft Entra voor de momenteel aangemelde gebruiker (de uitvoer kan verschillen).
Resultaten
Gefeliciteerd U hebt de tweede oefening van deze module voltooid. In deze oefening hebt u Azure Database for PostgreSQL geïnstalleerd in het implementatiemodel met één server, een database gemaakt met voorbeeldinventarisgegevens, de server geïntegreerd met Microsoft Entra-id en een eenvoudige Node.js-gebaseerde toepassing geïmplementeerd die query's uitvoert op de database door te vertrouwen op Microsoft Entra-verificatie.