Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En klient ansluter till Chat med en klientåtkomst-URL som bär dess användaridentitet. Den som utfärdar token bestämmer användar-ID:t, så token är där du kopplar en chattanvändare till en verklig identitet i din app.
Den här artikeln visar två sätt att få en token: ett snabbt från Azure-portalen för experiment, och serverutfärdade tokens för produktion.
Alternativ 1: Hämta en token från portalen (snabbt försök)
För snabba tester, generera en kundåtkomst-URL i portalen. Det kräver ingen kod, men URL:en är statisk och går ut, så använd den bara för experiment. För steg-för-steg-instruktionerna för portalen, se Hämta en klientåtkomsttoken från portalen.
Alternativ 2: Utfärda en token från din server (produktion)
I produktionsmiljö utfärdar din egen server token. Detta behåller dina Web PubSub-nycklar på servern och låter dig ställa in varje klients användar-ID från den inloggade användaren istället för från klientens inmatning.
Lägg till en förhandlingsslutpunkt
Servern exponerar en slutpunkt som returnerar en klientåtkomst-URL. Detta exempel använder Node.js med Express och Web PubSub server SDK.
Välj hur servern autentiserar sig mot Web PubSub:
npm install express @azure/web-pubsub
import express from "express";
import { WebPubSubServiceClient } from "@azure/web-pubsub";
// Keep your connection string safe.
const connectionString = process.env.WebPubSubConnectionString;
const hubName = "chat"; // the hub where you enabled Chat
const app = express();
const serviceClient = new WebPubSubServiceClient(connectionString, hubName);
app.get("/negotiate", async (req, res) => {
const userId = req.query.userId;
if (!userId) {
return res.status(400).json({ error: "userId is required" });
}
const token = await serviceClient.getClientAccessToken({ userId });
res.json({ url: token.url });
});
app.listen(3000, () => console.log("Listening on http://localhost:3000"));
Important
Detta exempel läser användar-ID från frågesträngen för att hålla det kort. I produktion, sätt användar-ID från den autentiserade användaren (till exempel från deras session), aldrig från klientinmatning. Annars kan en anropare begära en token för vilket användar-ID som helst.
Koppla klienten
Ge klient-SDK:n en callback som hämtar en URL från din endpoint. SDK:n anropar den igen när den behöver en ny token, till exempel efter en återanslutning.
const client = await ChatClient.start({
getClientAccessUrl: async () => {
const res = await fetch("/negotiate?userId=alice");
const data = await res.json();
return data.url;
},
});
Tokens livslängd och uppdatering
Klientåtkomsttokens går ut. En portal-URL och en URL från getClientAccessToken båda varar som standard i 60 minuter.
- Med en statisk URL (Alternativ 1) kan klienten inte återansluta efter att tokenen har gått ut. Det är okej för snabba tester.
- Med en callback (alternativ 2) begär SDK:n en ny URL från din server varje gång den återansluter, vilket gör att klienter med lång livslängd fortsätter att fungera utan att du behöver hålla reda på när URL:en upphör att gälla.
För att ändra livslängden, sätt expirationTimeInMinutes när du ringer getClientAccessToken.