Közvetlen vonalas továbbfejlesztett hitelesítés
A KÖVETKEZŐKRE VONATKOZIK: SDK v4
Ez a cikk bemutatja a potenciális biztonsági kockázatokat, amikor a felhasználók robothoz csatlakoznak, például a webchat vezérlő használatával. Emellett a Direct Line továbbfejlesztett hitelesítési beállításaival és a biztonságos felhasználói azonosító kezelésével enyhítő megoldásokat is bemutat.
Két felhasználói identitás létezik:
- A csatornafelhasználó identitása. A támadó használhatja megszemélyesítésre.
- A felhasználó identitása attól az identitásszolgáltatótól, amelyet a robot a felhasználó hitelesítéséhez használ. A támadó használhatja identitáshamisításhoz.
Megszemélyesítés
A megszemélyesítés egy támadó tevékenységére utal, aki azt hiszi a robottól, hogy valaki más. Például webchat a támadó megszemélyesíthet valakit a webchat-példány felhasználói azonosítójának módosításával.
Megszemélyesítés mérséklése
A felhasználói azonosító nem megfelelővé tétele.
Engedélyezze a Direct Line-csatorna továbbfejlesztett hitelesítési beállítását, hogy az Azure AI Bot Service tovább észlelhesse és elutasítsa a felhasználói azonosító módosításait. Ez azt jelenti, hogy a Direct Line és a robot közötti üzenetek felhasználói azonosítója (
Activity.From.Id
) mindig megegyezik a webchat vezérlő inicializálásához használt azonosítóval.Feljegyzés
A Direct Line létrehoz egy jogkivonatot a Direct Line titkos kód alapján, és beágyazza a
User.Id
jogkivonatba. Biztosítja, hogy a robotnak küldött üzenetek aUser.Id
tevékenységhezFrom.Id
tartoznak. Ha egy ügyfél egy másikFrom.Id
üzenetet küld a Direct Line-nak, az a jogkivonatba ágyazott azonosítóra változik, mielőtt továbbítanák az üzenetet a robotnak. Így nem használhat másik felhasználói azonosítót, miután a csatorna titkos kódját inicializálta ezzel az azonosítóval.Ehhez a funkcióhoz a felhasználói azonosítónak az alább látható módon
dl_
kell kezdődnie.Tipp.
Regionális robot esetén állítsa be
dlUrl
a kiválasztott régió szerint.
Ha európa van kiválasztva, állítsa be a következőt: "https://europe.directline.botframework.com/v3/directline/tokens/generate".
Ha india van kiválasztva, állítsa be a következőt: "https://india.directline.botframework.com/v3/directline/tokens/generate".
További információ a regionális robotokról: Regionalization in Azure AI Bot Service.public class HomeController : Controller { private const string secret = "<TODO: DirectLine secret>"; private const string dlUrl = "https://directline.botframework.com/v3/directline/tokens/generate"; public async Task<ActionResult> Index() { HttpClient client = new HttpClient(); var userId = $"dl_{Guid.NewGuid()}"; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, dlUrl); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secret); request.Content = new StringContent( JsonConvert.SerializeObject( new { User = new { Id = userId } }), Encoding.UTF8, "application/json"); var response = await client.SendAsync(request); string token = String.Empty; if (response.IsSuccessStatusCode) { var body = await response.Content.ReadAsStringAsync(); token = JsonConvert.DeserializeObject<DirectLineToken>(body).token; } var config = new ChatConfig() { Token = token, UserId = userId }; return View(config); } }
A létrehozott jogkivonatot a Direct Line titkos kód alapján használja a webchat vezérlőelem, ahogy az alább látható:
@model Bot_Auth_DL_Secure_Site_MVC.Models.ChatConfig @{ ViewData["Title"] = "Home Page"; } <div id="webchat" role="main" /> <head> <script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script> </head> <body> <script> window.WebChat.renderWebChat({ directLine: window.WebChat.createDirectLine({ token: '@Model.Token' }), userID: '@Model.UserId' }, document.getElementById('webchat')); </script> </body>
Identitáshamisítás
Az identitáshamisítás egy támadó azon műveletére utal, amely feltételezi egy jogos felhasználó identitását, majd ezt az identitást használja egy rosszindulatú cél eléréséhez.
Amikor egy robot arra kéri az A csatorna felhasználóját, hogy jelentkezzen be egy identitásszolgáltatóba, a bejelentkezési folyamatnak biztosítania kell, hogy az A felhasználó az egyetlen, aki bejelentkezik a szolgáltatóba. Ha egy másik felhasználó is bejelentkezhet a szolgáltatóba, a roboton keresztül hozzáférhet az A felhasználó erőforrásaihoz.
Felhasználói identitások hamisításának elhárítása
A webchat vezérlőben két mechanizmus biztosítja, hogy a megfelelő felhasználó be legyen jelentkezve.
Mágikus kód. A bejelentkezési folyamat végén a felhasználó egy véletlenszerűen létrehozott 6 jegyű kóddal (magic code) jelenik meg. A felhasználónak be kell írnia ezt a kódot a beszélgetésbe a bejelentkezési folyamat befejezéséhez. Ez általában rossz felhasználói élményt eredményez. Emellett adathalász támadásokra is érzékeny; egy rosszindulatú felhasználó becsaphat egy másik felhasználót, hogy jelentkezzen be, és szerezze be a mágikus kódot.
Közvetlen vonalas továbbfejlesztett hitelesítés. A Direct Line továbbfejlesztett hitelesítésével garantálhatja, hogy a bejelentkezési folyamat csak a webchat-ügyféllel azonos böngésző munkamenetben hajtható végre.
A védelem engedélyezéséhez indítsa el a webchat egy Direct Line-jogkivonattal, amely tartalmazza a robot webchat-ügyfél üzemeltetésére alkalmas megbízható tartományok listáját. A továbbfejlesztett hitelesítési beállításokkal statikusan megadhatja a megbízható tartományok (megbízható források) listáját a Direct Line konfigurációs oldalán. Lásd a Továbbfejlesztett hitelesítés konfigurálása című szakaszt.