Cvičení – implementace víceklientských dat
Toto cvičení vás provede následujícími kroky:
- Instalace Azure Database for PostgreSQL v modelu nasazení serveru.
- Vytvoření databáze s ukázkovými daty inventáře
- Integrace serveru s Azure AD.
- Implementace jednoduché aplikace založené na Node.js, která se dotazuje databáze pomocí ověřování Azure AD.
Poznámka
Toto cvičení ukazuje zjednodušený přístup k poskytování podpory pro více tenantů tím, že emuluje víceklientské funkce modelu nasazení Azure Database for PostgreSQL Hyperscale. Poskytuje také zjednodušený přístup k implementaci ověřování Azure AD ve scénářích s více tenanty, protože spoléhá na funkce Azure AD B2B. Azure AD přímo podporuje víceklientní aplikace, ale jejich podrobné pokrytí je nad rámec tohoto modulu.
V tomto cvičení:
- Vytvořte instanci Azure Database for PostgreSQL serveru.
- Připojte se k serveru Azure Database for PostgreSQL.
- Vytvořte databázi a ukázkové tabulky.
- Integrujte Azure Database for PostgreSQL server s Azure AD.
- Zaregistrovat aplikaci s Azure AD.
- Implementujte jednoduchou Azure AD integrovanou aplikaci založenou na Node.js.
- Ověřte funkčnost aplikace založené na Node.js.
Požadavky
K provedení tohoto cvičení potřebujete:
- Předplatné Azure.
- Účet Microsoft nebo účet Azure AD s rolí globálního správce v tenantovi Azure AD přidruženém k předplatnému Azure a s rolí vlastníka nebo přispěvatele v předplatném Azure.
- Dokončení prvního cvičení tohoto modulu
Vytvoření instance Azure Database for PostgreSQL serveru
Začnete vytvořením instance Azure Database for PostgreSQL serveru:
V případě potřeby spusťte webový prohlížeč, přejděte na Azure Portal a přihlaste se, abyste získali přístup k předplatnému Azure, které budete používat v tomto modulu.
Pomocí textového pole Hledat prostředky, služby a dokumenty na začátku stránky Azure Portal vyhledejte Azure Database for PostgreSQL a v seznamu výsledků v části Marketplace vyberte Azure Database for PostgreSQL.
V okně vyberte možnost Azure Database for PostgreSQL nasazení na dlaždici Jeden server vyberte Vytvořit.
Na kartě Základní informace v okně Jednoúčelový server nakonfigurujte následující nastavení, pak vyberte Další: Zkontrolovat a vytvořit a ponechte všechna ostatní nastavení s jejich výchozími hodnotami:
Nastavení Konfigurace Předplatné Vyberte název předplatného Azure, které budete v tomto modulu používat. Skupina prostředků Vytvořte novou skupinu prostředků s názvem postgresql-db-RG. Název serveru Zadejte jedinečný název skládající se z malých písmen, číslic nebo pomlček a začínající písmenem. Zdroj dat Vyberte Žádná. Umístění Vyberte oblast Azure, která je nejblíže umístění vašeho testovacího prostředí, kde můžete vytvářet Azure Database for PostgreSQL instance. Verze Vyberte 11. Výpočty + úložiště Vyberte odkaz Konfigurovat server . V okně Konfigurovat vyberte Základní, nastavte hodnotu virtuálního jádra na 1 a Úložiště na 5 GB a pak vyberte OK. Uživatelské jméno správce Zadejte student. Heslo Zadejte Pa55w0rd1234. Na kartě Zkontrolovat a vytvořit v okně Jednoúčelový server vyberte Vytvořit.
Počkejte na dokončení zřizování. Může to trvat asi pět minut.
Poznámka
Proces zřizování na cílovém serveru automaticky vytvoří databázi s názvem postgres .
Připojení k serveru Azure Database for PostgreSQL
Po zřízení Azure Database for PostgreSQL serveru se k němu připojíte pomocí nástroje psql.
V okně prohlížeče zobrazující Azure Portal s oknem stavu zřizování Azure Database for PostgreSQL serveru vyberte Přejít k prostředku.
V okně Azure Database for PostgreSQL server vyberte ve svislé nabídce v části Nastavenímožnost Zabezpečení připojení.
V okně Zabezpečení připojení nastavte Povolit přístup ke službám Azure na Ano, vyberte + Přidat IP adresu klienta, nastavte Vynutit připojení SSL na ZAKÁZÁNO a pak vyberte Uložit.
Poznámka
Tato nastavení umožní připojení k databázi z vašeho počítače a z aplikací spuštěných v Azure.
Poznámka
Zakázání vynucování SSL má zjednodušit následná cvičení. Obecně platí, že toto nastavení byste měli ponechat povolené.
V okně prohlížeče zobrazující Azure Portal s oknem serveru Azure Database for PostgreSQL vyberte ve svislé nabídce Přehled.
V části Základy určete položky vedle názvu serveru a Správa popisky uživatelských jmen a poznamenejte si jejich hodnoty.
Poznámka
Všimněte si, že uživatelské jméno obsahuje @ symbol následovaný názvem serveru, který jste zadali v předchozím úkolu.
V okně prohlížeče zobrazujícího Azure Portal s oknem Azure Database for PostgreSQL serveru vyberte ve svislé nabídce v části Nastavenímožnost Připojovací řetězce.
V seznamu připojovacích řetězců zkopírujte hodnotu připojovacího řetězce psql do schránky a poznamenejte si ji, abyste ji mohli použít později v tomto cvičení.
Poznámka
Připojovací řetězec má následující syntaxi, kde
<server_name>
zástupný symbol představuje název serveru, který jste identifikovali dříve v této úloze:psql "host=<server_name>.postgres.database.azure.com port=5432 dbname={your_database} user=student@<server_name> password={your_password} sslmode=require"
V Azure Portal otevřete relaci Bash Cloud Shell tak, že na panelu nástrojů vedle vyhledávacího textového pole vyberete jeho ikonu.
V relaci Bash v podokně Cloud Shell vložte hodnotu připojovacího řetězce psql ze schránky, upravte ho tak, aby odpovídal následujícímu příkazu, a spusťte ho pro připojení k databázi postgres hostované na nově nasazené instanci serveru Azure Database for PostgreSQL. Hodnota zástupného symbolu
<server_name>
už bude zahrnutá v připojovacím řetězci, který jste vložili ze schránky:psql "host=<server_name>.postgres.database.azure.com port=5432 dbname=postgres user=student@<server_name>.postgres.database.azure.com password=Pa55w0rd1234 sslmode=require"
Poznámka
Po úspěšném připojení se
postgres=>
zobrazí výzva.
Vytvoření databáze a ukázkových tabulek
V okně prohlížeče zobrazujícího Azure Portal s relací Bash v podokně Cloud Shell spusťte z příkazového
postgres=>
řádku následující příkaz pro vytvoření nové databáze s názvem cnamtinventory:CREATE DATABASE cnamtinventory;
Spuštěním následujícího příkazu přepněte připojení k nově vytvořené databázi:
\c cnamtinventory
Spuštěním následujícího příkazu vytvořte tabulku tenantů:
CREATE TABLE tenants ( id bigserial PRIMARY KEY, name text NOT NULL, created_at TIMESTAMP DEFAULT NOW()::date, updated_at TIMESTAMP DEFAULT NOW()::date );
Spuštěním následujícího příkazu vytvořte tabulku inventáře:
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;
Poznámka
Data jsou rozdělena na základě hodnoty sloupce kalendářního data.
Spuštěním následujícího příkazu ověřte, že se tabulka úspěšně vytvořila:
\dt
Spuštěním následujícího příkazu načtěte ukázková data do tabulky tenants:
INSERT INTO tenants (id, name) VALUES (1, 'adatum'); INSERT INTO tenants (id, name) VALUES (2, 'contoso');
Spuštěním následujícího příkazu načtěte ukázková data do tabulky inventáře:
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);
Spuštěním následujícího příkazu ověřte, že tabulka inventáře obsahuje data, která jste vložili:
SELECT * FROM inventory;
Zavřete podokno Cloud Shell.
Integrace Azure Database for PostgreSQL serveru s Azure AD
Pokud chcete integrovat instanci Azure Database for PostgreSQL serveru s Azure AD, musíte jako určený správce služby Active Directory serveru zadat uživatelský účet Azure AD. K tomuto účelu použijete uživatelský účet adatumadmin1 , který jste vytvořili v předchozím úkolu. Musíte se přihlásit k serveru pomocí daného uživatelského účtu. V tomto okamžiku budete moct vytvářet uživatele databáze založené na Azure AD a přiřazovat jim databázové role. Použijete pro objekty adatumuser1, adatumgroup1 a contosouser1 Azure AD, které jste vytvořili v předchozím cvičení.
V okně prohlížeče zobrazujícího Azure Portal s oknem serveru Azure Database for PostgreSQL vyberte ve svislé nabídce v části Nastavenímožnost Správce služby Active Directory a pak na panelu nástrojů vyberte Nastavit správce.
V okně správce active directory vyberte v seznamu Azure AD uživatelských účtů uživatelský účet adatumadmin1, který jste vytvořili v předchozím cvičení, vyberte Vybrat a pak vyberte Uložit.
Otevřete jiné okno webového prohlížeče v režimu Incognito/InPrivate, přejděte na Azure Portal a přihlaste se pomocí uživatelského účtu adatumadmin1 (s heslem Pa55w.rd1234), který jste vytvořili v předchozím cvičení.
V Azure Portal otevřete Cloud Shell tak, že na panelu nástrojů vedle vyhledávacího textového pole vyberete jeho ikonu.
Když se zobrazí výzva k výběru Bash nebo PowerShellu, vyberte Bash a po zobrazení zprávy Nemáte připojené žádné úložiště vyberte Vytvořit úložiště.
V relaci Bash v podokně Cloud Shell spusťte následující příkazy, které načtou a zobrazí přístupový token Azure AD potřebný pro přístup k Azure Database for PostgreSQL:
FULL_TOKEN=$(az account get-access-token --resource-type oss-rdbms) echo $FULL_TOKEN
Poznámka
Příkaz vygeneruje výstup, který obsahuje token s kódováním Base 64, který identifikuje ověřeného uživatele pro prostředek Azure Database for PostgreSQL.
Výstup používá následující formát:
{ "accessToken": "eyJ0eXAiOiJKV1QiLDJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNaRHJPRFhFSzFqS1doWHNsSFJfS1hFZyIsImtpZCI6Im5PbzNaRHJPRFhFSzFqS1doWHNsSFJfS1hFZyJ9.eyJhdWQiOiJodHRwczovL29zc3JkYm1zLWFhZC5kYXRhYmFzZS53aW5kb3dzLm5ldCIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0L2E2MTM5NTE0LTQxYTUtNDEyMy05ODFhLWVlN2JiOWU2YTNiNC8iLCJpYXQiOjE2MjE2MTc0NjUsIm5iZiI6MTYyMTYxNzQ2NSwiZXhwIjoxNjIxNjIxMzY0LCJhY3IiOiIxIiwiYWlvIjoiQVRRQXkvOFRBQUFBU1I5cXdVcm9KVVpmWEJabHY1NzRUenpmeGZFUlo1SXNDV3Z1aDVEOVBGWnZsL09SYWYzTGg3Zmx4NEFVaFpkVSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiJiNjc3YzI5MC1jZjRiLTRhOGUtYTYwZS05MWJhNjUwYTRhYmUiLCJhcHBpZGFjciI6IjIiLCJpcGFkZHIiOiIxNDIuMTA1LjQ4LjUxIiwibmFtZSI6ImFkYXR1bWFkbWluMSIsIm9pZCI6Ijc2ZTdmYWI5LTZiOTItNGQzZi1hOGI5LWY1NWNhNDQyYzZiMSIsInB1aWQiOiIxMDAzMjAwMTQ0RTNDMDBBIiwicmgiOiIwLkFYd0FGSlVUcHFWQkkwR1lHdTU3dWVhanRKRENkN1pMejQ1S3BnNlJ1bVVLU3I1OEFNay4iLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJvNmhNMWlHXzM3MExaQk92UlpUQjBYeEdjSmpaOUVmN21lc1N2RkJYY3FFIiwidGlkIjoiYTYxMzk1MTQtNDFhNS00MTIzLTk4MWEtZWU3YmI5ZTZhM2I0IiwidW5pcXVlX25hbWUiOiJhZGF0dW1hZG1pbjFAbGl2ZWlkMjE3b3V0bG9vay5vbm1pY3Jvc29mdC5jb20iLCJ1cG4iOiJhZGF0dW1hZG1pbjFAbGl2ZWlkMjE3b3V0bG9vay5vbm1pY3Jvc29mdC5jb20iLCJ1dGkiOiJJdE81VndoU2lVV0o0UUZNQ04xQUFRIiwidmVyIjoiMS4wIn0.fFV3s2OjpVU52_SA8-atIDdkLN4onLgPmYrxa5eNCbuF0VbVOA5a9Ifv66H5a__6lMiLoV8n9EgTV4CpsLmvn6JFjAD9aHyEBkS2_iL_Rx-KCmlc7Vr6UHezrlrA3skf8oq3yb2Zqy_A3_kOrsnFgX8NP5uWoMmTzjWGTw3rOfjERJ7PowQC60nzlF1uCRDKIWw62SW4xiDQj23DSLDbkfUiG_Z9Swbw4DuMPTPeUVwz9AWhmg8lrqt5oawhKB-OMcpuwSf1-rE1cf2w54uthU6764DBEf5MVt8K95AKW0rey888znrIGKT-6yFenYUZZjL1aJ-jz8OIyNjuQK73XQ", "expiresOn": "2021-05-21 18:22:44.000000", "subscription": "d15bacf3-b17b-4ad5-a913-5fb904bd2f71", "tenant": "a6239514-41a5-4123-981a-ee7bb9e6a3b4", "tokenType": "Bearer" }
Spuštěním následujícího příkazu nastavte hodnotu proměnné PGPASSWORD na hodnotu přístupového tokenu z výstupu příkazu, který jste spustili v předchozím kroku:
export PGPASSWORD=$(echo $FULL_TOKEN | jq -r '.accessToken')
Spuštěním následujícího příkazu se připojte k databázi cnamtinventory pomocí nástroje psql a ověřování Azure AD (zástupný symbol nahraďte
<server_name>
názvem serveru, který jste identifikovali dříve v tomto cvičení):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"
Poznámka
Po úspěšném připojení by se
cnamtinventory=>
měla zobrazit výzva.Z příkazového
cnamtinventory=>
řádku spusťte následující příkaz, který vytvoří roli databáze odpovídající skupině adatumgroup1 Azure AD, kterou jste vytvořili v předchozím cvičení:CREATE ROLE "adatumgroup1" WITH LOGIN IN ROLE azure_ad_user;
Spuštěním následujícího příkazu ověřte, že se role úspěšně vytvořily:
SELECT rolname FROM pg_roles;
Spuštěním následujícího příkazu udělte oprávnění SELECT k tabulce inventářeskupině adatumgroup1 , kterou jste vytvořili v předchozím cvičení:
GRANT SELECT ON inventory TO adatumgroup1;
Odhlaste se jako uživatelský účet adatumadmin1 a zavřete okno webového prohlížeče v anonymním režimu nebo režimu InPrivate.
Registrace aplikace pomocí Azure AD
Chcete-li implementovat ukázkovou aplikaci založenou na Node.js, která pro přístup k databázi Azure Database for PostgreSQL používá ověřování Azure AD, musíte vytvořit objekt aplikace Azure AD a odpovídající objekt zabezpečení. To umožní aplikaci založené na Node.js zosobnit Azure AD uživatele při přístupu k databázovým objektům.
V okně webového prohlížeče zobrazujícího Azure Portal použijte textové pole Hledat prostředky, služby a dokumenty na začátku stránky Azure Portal a vyhledejte Azure Active Directory a v seznamu výsledků vyberte Azure Active Directory.
V okně Azure Active Directory vyberte ve svislé nabídce v části SpravovatRegistrace aplikací.
V okně Registrace aplikací vyberte + Nová registrace.
V okně Zaregistrovat aplikaci do textového pole Název zadejte can-app. V části Podporované typy účtů se ujistěte, že je vybraná možnost Accounts only in this organizational directory (Accounts only in this organizational directory only – Single tenant) (Účty pouze v tomto organizačním adresáři – Jeden tenant). V části Identifikátor URI pro přesměrování (volitelné) nastavte položku Web na
http://localhost:8080/redirect
a pak vyberte Zaregistrovat.Poznámka
Máte možnost nakonfigurovat podporu více tenantů pro Azure AD zaregistrované aplikace. Podrobný popis tohoto přístupu je však mimo rozsah tohoto modulu.
Poznámka
Po nasazení aplikace budete muset upravit hodnotu identifikátoru URI pro přesměrování (volitelné) tak, aby odrážela její skutečnou adresu URL.
V okně can-app zkontrolujte výsledná nastavení a poznamenejte si hodnoty vlastností ID aplikace (klienta) a ID adresáře (tenanta).
V okně can-app v části Spravovat vyberte Tajné kódy certifikátů & a vyberte + Nový tajný klíč klienta.
V okně Přidat tajný klíč klienta do textového pole Popis zadejte can-secret-0. V rozevíracím seznamu Konec platnosti ponechte výchozí hodnotu a vyberte Přidat.
Zpět na can-app | V okně Tajné kódy certifikátů & zkopírujte hodnotu nově vygenerovaného tajného klíče.
Poznámka
Před přechodem z tohoto okna nezapomeňte zkopírovat hodnotu tajného kódu, protože v tomto okamžiku už ho nebudete moct načíst. Pokud k tomu dojde, vytvořte další tajný kód.
V can-app | V okně Tajné kódy certifikátů & ve svislé nabídce v části Spravovat vyberte Oprávnění rozhraní API.
V can-app | V okně Oprávnění rozhraní API vyberte + Přidat oprávnění, v okně Požadovat oprávnění rozhraní API vyberte kartu Rozhraní API, která moje organizace používá, do vyhledávacího textového pole zadejte Azure OSSRDBMS Database (Databáze Azure OSSRDBMS) a v seznamu výsledků vyberte Azure OSSRDBMS Database (Databáze Azure OSSRDBMS).
V okně Požadovat oprávnění rozhraní API vyberte Delegovaná oprávnění, zaškrtněte políčko user_impersonation a pak vyberte Přidat oprávnění.
Zpět na can-app | V okně Oprávnění rozhraní API vyberte Udělit souhlas správce pro Výchozí adresář a po zobrazení výzvy k potvrzení vyberte Ano.
V can-app | V okně Oprávnění rozhraní API ověřte, že oprávnění byla udělena.
Implementace jednoduché aplikace integrované Azure AD založené na Node.js
Když je aplikace zaregistrovaná v tenantovi Azure AD, můžete pokračovat v její implementaci.
V okně prohlížeče zobrazujícího Azure Portal spusťte relaci Bash v Cloud Shell tak, že na panelu nástrojů vedle vyhledávacího textového pole vyberete jeho ikonu.
V relaci Bash v podokně Cloud Shell spusťte následující příkazy, které inicializují projekt Node.js v novém adresáři:
mkdir -p cna-aadexpress && cd cna-aadexpress npm init -y
Spuštěním následujících příkazů přidejte požadované balíčky do závislosti projektu:
npm install express npm install pg npm install @azure/msal-node
Spuštěním následujícího příkazu vytvořte soubor s názvemindex.js v kořenovém adresáři projektu:
touch ./index.js
Pomocí editoru nano otevřete soubor index.js a přidejte následující obsah. Zástupné symboly , ,
<client_secret>
a<server_name>
(s výjimkoupostgres.database.azure.com
přípony<client_id>
) nahraďte skutečnými hodnotami,<tenant_id>
které jste si poznamenali dříve v tomto cvičení:Poznámka
Zástupné symboly
<client_id>
a<tenant_id>
odpovídají ID aplikace (klienta) a vlastnostem ID adresáře (tenanta) odkazovaných dříve v tomto cvičení.// 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)); });
Poznámka
Víceklient Azure AD zaregistrovaná aplikace používá adresu URL
authority: "https://login.microsoftonline.com/common"
obecné autority , ale ve vašem případě musíte použít adresu URL s jedním tenantem, která obsahuje vaše ID tenanta.Poznámka
Mějte na paměti, že po nasazení aplikace budete muset nahradit hodnotu ADRESA URL PŘESMĚROVÁNÍ tak, aby odpovídala její skutečné adrese URL pro přesměrování.
Pomocí editoru kódu upravte soubor package.json v kořenovém adresáři projektu a nahraďte ho následujícím obsahem:
{ "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" } }
Ověření funkčnosti aplikace založené na Node.js
Konečně jste připraveni otestovat funkčnost webové aplikace. Můžete ho sice kontejnerizovat, ale kvůli jednoduchosti ho nasadíte do Azure App Service. Tím získáte rychlý způsob, jak ověřit jeho funkčnost a zajistit, že kontejnerizace je životaschopnou možností.
V okně webového prohlížeče zobrazujícího Azure Portal v relaci Bash v podokně Cloud Shell spusťte následující příkazy k vytvoření skupiny prostředků, která bude hostovat webovou aplikaci Azure, do které nasadíte aplikaci Node.js Express:
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
Spuštěním následujících příkazů vytvořte plán Azure App Service úrovně Free, který bude hostovat novou webovou aplikaci Azure:
SPNAME=aadexpress-sp az appservice plan create --name $SPNAME --resource-group $RG2NAME --sku F1 --is-linux
Spuštěním následujících příkazů vytvořte novou webovou aplikaci Azure založenou na Node.js:
WEBAPPNAME=aadexpress$RANDOM$RANDOM az webapp create --name $WEBAPPNAME --resource-group $RG2NAME --plan $SPNAME --runtime "NODE|12-lts"
Spuštěním následujících příkazů identifikujte název webové aplikace:
echo $WEBAPPNAME
Pomocí editoru kódu otevřete souborindex.js , nahraďte dva
<webapp_name>
zástupné symboly názvem, který jste identifikovali v předchozím kroku, uložte změny a zavřete soubor.Poznámka
Nezapomeňte nahradit oba
<webapp_name>
zástupné symboly.V okně webového prohlížeče otevřete další kartu zobrazující Azure Portal, přejděte na Azure Portal a po zobrazení výzvy se přihlaste, abyste získali přístup k předplatnému Azure, které budete v tomto modulu používat.
V Azure Portal pomocí textového pole Hledat prostředky, služby a dokumenty na začátku stránky Azure Portal vyhledejte Azure Active Directory a v seznamu výsledků vyberte Azure Active Directory.
V okně Azure Active Directory přejděte do okna Registrace aplikací, vyberte položku can-app, ve svislé nabídce v části Spravovat vyberte Ověřování.
V can-app | V okně Ověřování upravte hodnotu identifikátoru URI pro přesměrování tak, aby odpovídala položce, kterou jste aktualizovali v souboruindex.js , a uložte změnu.
Přepněte zpět na kartu webového prohlížeče zobrazující relaci Bash v podokně Cloud Shell a spuštěním následujících příkazů inicializujete místní úložiště Git a potvrdíte všechny změny v hlavní větvi:
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"
Spuštěním následujících příkazů nastavte přihlašovací údaje pro nasazení na úrovni uživatele:
DEPLOYMENTUSER=m06User$RANDOM DEPLOYMENTPASS=m06Pass$RANDOM$RANDOM az webapp deployment user set --user-name $DEPLOYMENTUSER --password $DEPLOYMENTPASS
Spuštěním následujících příkazů identifikujte přihlašovací údaje nasazení na úrovni uživatele a zaznamenejte jejich hodnotu, protože je budete potřebovat později v této úloze:
echo $DEPLOYMENTUSER echo $DEPLOYMENTPASS
Spuštěním následujících příkazů identifikujte adresu URL nasazení webové aplikace Azure, kterou použijete jako cíl
git push
příkazu: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)
Spuštěním následujícího příkazu nakonfigurujte vzdálené úložiště s názvem azure, které představuje adresu URL nasazení, kterou jste identifikovali v předchozím kroku:
git remote add azure $DEPLOYMENTURL
Spuštěním následujících příkazů vytvořte hlavní větev založenou na hlavní větvi a nasdílejte její obsah do webové aplikace Azure (po zobrazení výzvy k zadání hesla, které je součástí přihlašovacích údajů pro nasazení na úrovni uživatele, které jste si poznamenali dříve v tomto úkolu):
git checkout -b master git commit -a -m "test" git push --set-upstream azure master
Zavřete podokno Cloud Shell.
Otevřete jiné okno webového prohlížeče v anonymním režimu nebo režimu InPrivate, přejděte na Azure Portal a přihlaste se pomocí uživatelského účtu adatumuser1, který jste vytvořili v předchozím cvičení.
V okně webového prohlížeče zobrazující Azure Portal použijte textové pole Hledat prostředky, služby a dokumenty na začátku Azure Portal stránky a vyhledejte App Services.
V okně App Services v seznamu instancí App Service vyberte položku představující nově nasazenou webovou aplikaci Azure.
V okně zobrazující vlastnosti webové aplikace zkopírujte v části Základy hodnotu adresy URL.
Otevřete další kartu ve stejném okně prohlížeče a na kartě Adresa URL , vložte adresu URL, kterou jste právě zkopírovali do schránky, přidejte příponu /auth na konec adresy URL a pak vyberte Enter:
Poznámka
Adresa URL by měla mít následující formát:
https://<webapp_name>.azurewebsites.net/auth
Ověřte, že výsledná webová stránka se skládá z Azure AD ověřovacích informací pro aktuálně přihlášeného uživatele (výstup se může lišit).
Výsledky
Gratulujeme! Dokončili jste druhé cvičení tohoto modulu. V tomto cvičení jste nainstalovali Azure Database for PostgreSQL do modelu nasazení s jedním serverem, vytvořili databázi s ukázkovými daty inventáře, integrovali server s Azure AD a implementovali jste jednoduchou aplikaci založenou na Node.js, která dotazuje databázi na základě ověřování Azure AD.
Potřebujete pomoc? Projděte si našeho průvodce odstraňováním potíží nebo nahlaste potíže a uveďte konkrétní připomínky.