Megosztás a következőn keresztül:


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.

  • Csatlakozás egy robotot a Direct Line-ba.

  • 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 a User.Id tevékenységhez From.Idtartoznak. Ha egy ügyfél egy másik From.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.

  1. 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.

  2. 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.