Sdílet prostřednictvím


Přidání ověřování do bota

PLATÍ PRO: SDK v4

Sada Azure AI Bot Service v4 SDK usnadňuje vývoj robotů, kteří mají přístup k online prostředkům, které vyžadují ověřování uživatelů. Robot nemusí spravovat ověřovací tokeny, protože ho Azure dělá za vás pomocí OAuth 2.0 k vygenerování tokenu na základě přihlašovacích údajů každého uživatele. Váš robot k přístupu k těmto prostředkům používá token vygenerovaný Azure. Tímto způsobem uživatel nemusí robotovi zadávat ID a heslo pro přístup k zabezpečenému prostředku, ale jenom důvěryhodnému zprostředkovateli identity.

Přehled toho, jak bot Framework zpracovává tento typ ověřování, najdete v tématu Ověřování uživatelů.

Tento článek odkazuje na dvě ukázky. Jeden ukazuje, jak získat ověřovací token. Druhý je složitější a ukazuje, jak získat přístup k Microsoft Graphu jménem uživatele. V obou případech můžete k získání tokenu OAuth pro bota použít Azure AD v1 nebo v2. Tento článek popisuje, jak:

  • Vytvořte prostředek Azure Bot
  • ** Vytvořte zprostředkovatele identity Microsoft Entra ID
  • Registrace zprostředkovatele identity Microsoft Entra ID u robota
  • Příprava kódu robota

Po dokončení tohoto článku budete mít robota, který může reagovat na několik jednoduchých úloh. V příkladu Microsoft Graphu můžete odeslat e-mail, zobrazit, kdo jste, a zkontrolovat nedávné e-maily. K otestování funkcí OAuth nemusíte robota publikovat. Robot ale bude potřebovat platné ID a heslo aplikace Azure.

Poznámka:

Sady SDK služby Bot Framework JavaScript, C# a Python budou nadále podporovány, ale sada Java SDK se vyřazuje s konečnou dlouhodobou podporou končící v listopadu 2023.

Stávající roboti sestavení pomocí sady Java SDK budou i nadále fungovat.

Při vytváření nových robotů zvažte použití aplikace Microsoft Copilot Studio a přečtěte si o výběru správného řešení copilotu.

Další informace najdete v tématu Budoucnost vytváření robotů.

Úvahy o webovém chatu a přímé lince

Důležité

Pokud chcete zmírnit rizika zabezpečení při připojování k robotovi pomocí ovládacího prvku Webový chat, musíte použít Direct Line s povoleným rozšířeným ověřováním. Další informace naleznete v tématu Direct Line rozšířené ověřování.

Požadavky

  • Znalost základů robota, správy stavu, knihovny dialogů a způsobu implementace sekvenčního toku konverzace a opětovného použití dialogů

  • Znalost vývoje pro Azure a OAuth 2.0

  • Visual Studio 2017 nebo novější pro .NET

  • Node.js pro JavaScript.

  • Python 3.8 nebo novější pro Python

  • Jeden z níže uvedených ukázek.

    Vzorek Verze BotBuilderu Demonstruje
    Ověřování v jazyce C# nebo JavaScript nebo Java nebo Python v4 Podpora OAuthCard
    Ověřování pro Microsoft Graph v jazyce C# nebo JavaScript nebo Java nebo Python v4 Podpora rozhraní Microsoft Graph API s OAuth 2.0
    Ověřování pro Microsoft Teams v jazyce C# nebo JavaScript nebo Java nebo Python v4 Podpora rozhraní Microsoft Graph API s OAuth 2.0

    Pokud chcete spustit ukázky uvedené v tomto článku, potřebujete:

    • Aplikace Microsoft Entra ID, ve které se má zaregistrovat prostředek robota v Azure. Tato aplikace umožňuje robotovi přístup k externímu zabezpečenému prostředku, jako je Například Microsoft Graph. Umožňuje také uživateli komunikovat s robotem prostřednictvím několika kanálů, jako je Webový chat.
    • Samostatná aplikace Microsoft Entra ID, která bude fungovat jako zprostředkovatel identity. Tato aplikace poskytuje přihlašovací údaje potřebné k navázání připojení OAuth mezi robotem a zabezpečeným prostředkem. Všimněte si, že tento článek používá Active Directory jako zprostředkovatele identity. Podporuje se také mnoho dalších poskytovatelů.

Důležité

Kdykoli zaregistrujete robota v Azure, přiřadí se mu aplikace Microsoft Entra ID. Tato aplikace ale zabezpečuje přístup z kanálu k botovi. Potřebujete další aplikaci Microsoft Entra ID pro každý externí zabezpečený prostředek, ke které má robot přístup jménem uživatele.

Vytvořte prostředek

Vytvořte prostředek Azure Bot, který vám umožní zaregistrovat robota ve službě Azure AI Bot Service.

Tip

Nové prostředky Web App Bot a Bot Channels Registration se nedají vytvořit. Všechny existující prostředky, které jsou nakonfigurované a nasazené, budou fungovat i nadále. roboti vytvoření ze šablony VSIX nebo Yeoman ze sady SDK verze 4.14.1.2 nebo novější obsahují šablony ARM, které vygenerují prostředek Azure Bot.

  1. Přejděte na Azure Portal.

  2. V pravém podokně vyberte Vytvořit prostředek.

  3. Do vyhledávacího pole zadejte bota stiskněte Enter.

  4. Vyberte kartu Azure Bot.

    Vyberte prostředek bota Azure

  5. Vyberte Vytvořit.

  6. Zadejte hodnoty do požadovaných polí a zkontrolujte a aktualizujte nastavení.

    1. Zadejte informace v části Podrobnosti projektu. Vyberte, jestli váš robot bude mít globální nebo místní rezidenci dat. V současné době je funkce "lokální ukládání dat" dostupná pro prostředky v regionech "westeurope" a "centralindia". Další informace najdete v tématu Regionalizace ve službě Azure AI Bot Service.

      Nastavení detailů projektu pro prostředek Azure Bot

    2. Zadejte informace pod ID aplikace Microsoftu. Vyberte způsob, jakým se bude identita robota spravovat v Azure a jestli se má vytvořit nová identita nebo použít existující.

      Nastavení ID aplikace Microsoftu pro prostředek Azure Bot

  7. Vyberte Zkontrolovat a vytvořit.

  8. Pokud ověření projde, vyberte Vytvořit.

  9. Po dokončení nasazení vyberte Přejít k prostředku. Měli byste vidět robota a související prostředky uvedené ve vybrané skupině prostředků.

  10. Pokud ještě sadu SDK služby Bot Framework nemáte, vyberte Stáhnout z GitHubu a zjistěte, jak využívat balíčky pro preferovaný jazyk.

    Vytvoření robota v sadě SDK

Teď jste připraveni sestavit robota pomocí sady SDK služby Bot Framework.

Tip

Když Azure vytvoří nový prostředek Azure Bot s jedním tenantem nebo více tenanty s novým ID aplikace, vygeneruje také heslo.

Informace o identitě robota

Podle těchto kroků přidejte informace o identitě do konfiguračního souboru robota. Soubor se liší v závislosti na programovacím jazyce, který používáte k vytvoření robota.

Důležité

Verze Bot Framework SDK pro Javu podporuje pouze víceklientské boty. Verze C#, JavaScript a Python podporují všechny tři typy aplikací pro správu identity robota.

Jazyk Název souboru Poznámky
C# appsettings.json Podporuje všechny tři typy aplikací pro správu identity robota.
JavaScript .env Podporuje všechny tři typy aplikací pro správu identity robota.
Java application.properties Podporuje pouze roboty s více tenanty.
Python config.py Podporuje všechny tři typy aplikací pro správu identity robota.

Informace o identitě, které potřebujete přidat, závisí na typu aplikace robota. Do konfiguračního souboru zadejte následující hodnoty.

K dispozici pro roboty jazyka C#, JavaScript a Python.

Vlastnost Hodnota
MicrosoftAppType UserAssignedMSI
MicrosoftAppId ID klienta uživatelsky přiřazené spravované identity.
MicrosoftAppPassword Nevztahuje se. Nechte toto pole prázdné pro uživatelsky přiřazeného robota s řízenou identitou.
MicrosoftAppTenantId ID tenanta spravované identity přiřazené uživatelem.

Aktualizace služby App Service

Pokud máte existující prostředek služby App Service (webovou aplikaci) pro svého robota a robot je aplikací s uživatelsky přiřazenou spravovanou identitou, můžete potřebovat aktualizovat aplikační službu App Service vašeho robota:

  1. Přejděte do portálu App Service pro webovou aplikaci vašeho robota.
  2. V části Nastavení vyberte Identita.
  3. Na panelu Identita vyberte kartu Uživatel přiřadil a Přidat (+).
  4. V okně Přidat uživatelem přiřazenou spravovanou identitu:
    1. Vyberte své předplatné.

    2. U spravovaných identit přiřazených uživatelem vyberte spravovanou identitu robota. Pokud se spravovaná identita automaticky vygenerovala za vás, bude mít stejný název jako robot.

    3. Vyberte Přidat , pokud chcete tuto identitu použít pro robota.

      Okno Identita služby App Service se spravovanou identitou pro vybraného robota

Jak získat ID aplikace nebo ID tenanta

K získání identifikátoru aplikace nebo tenanta vašeho robota:

  1. Přejděte do panelu prostředku Azure Bot pro vašeho robota.
  2. Přejděte do panelu Konfigurace robota. V tomto okně můžete zkopírovat Microsoft App ID bota nebo ID tenanta aplikace.

Vygenerování nového hesla

Roboti s jedním tenantem a více tenanty mají tajný klíč aplikace nebo heslo, které potřebujete pro některé operace. Azure AI Bot Service skryje tajemství robota. Vlastník prostředku App Service bot může ale vygenerovat nové heslo:

  1. Přejděte na panel prostředku Azure Bot pro váš bot.
  2. Přejděte na kartu Konfigurace robota.
  3. Vyberte Spravovat vedle ID aplikace Microsoft, abyste přešli na panel Certifikáty a tajné kódy pro službu App Service.
  4. Podle pokynů v panelu vytvořte nový tajný klíč klienta a zaznamenejte hodnotu na bezpečné místo.

Služba identit Microsoft Entra ID

Microsoft Entra ID je cloudová služba identit, která umožňuje vytvářet aplikace, které bezpečně přihlašují uživatele pomocí oborových standardních protokolů, jako je OAuth 2.0.

Můžete použít jednu z těchto dvou služeb identit:

  1. Vývojářská platforma Microsoft Entra ID (v1.0). Označuje se také jako koncový bod Azure AD v1 , který umožňuje vytvářet aplikace, které bezpečně přihlašují uživatele pomocí pracovního nebo školního účtu Microsoft. Další informace najdete v přehledu Microsoft Entra ID pro vývojáře (verze 1.0).
  2. Microsoft Identity Platform (v2.0). Označuje se také jako koncový bod Microsoft Entra ID , což je vývoj platformy Azure AD (v1.0). Umožňuje vytvářet aplikace, které se přihlašují ke všem zprostředkovatelům identity Microsoftu a získávají tokeny pro volání rozhraní MICROSOFT API, jako je Microsoft Graph nebo jiná rozhraní API, která vytvořili vývojáři. Další informace najdete v přehledu platformy Microsoft Identity Platform (v2.0).

Informace o rozdílech mezi koncovými body v1 a v2 najdete v tématu Proč aktualizovat platformu Microsoft Identity Platform (v2.0)?. Úplné informace najdete v tématu Microsoft Identity Platform (dříve Microsoft Entra ID pro vývojáře).

Vytvořte poskytovatele identity Microsoft Entra ID

Tato část ukazuje, jak vytvořit zprostředkovatele identity Microsoft Entra ID, který k ověření robota používá OAuth 2.0. Můžete použít koncové body Azure AD verze 1 nebo Microsoft Entra ID.

Tip

Budete muset vytvořit a zaregistrovat aplikaci Microsoft Entra ID v tenantovi, ve kterém můžete udělit souhlas s delegováním oprávnění požadovaných jednou aplikací.

  1. Na webu Azure Portal otevřete panel ID Microsoft Entra. Pokud nejste ve správném tenantovi, vyberte Přepnout adresář a přepněte na správného tenanta. (Informace o tom, jak vytvořit tenanta, najdete v tématu Přístup k portálu a vytvoření tenanta.)

  2. Otevřete panel Registrace aplikací.

  3. Na panelu Registrace aplikací vyberte Nová registrace.

  4. Vyplňte požadovaná pole a vytvořte registraci aplikace.

    1. Pojmenujte svoji aplikaci.

    2. Vyberte podporované typy účtů pro vaši aplikaci. (Každá z těchto možností bude s touto ukázkou fungovat.)

    3. Pro identifikátor URI přesměrování vyberte Web a nastavte adresu URL na jednu z podporovaných OAuth adres URL přesměrování.

    4. Vyberte Zaregistrovat.

      • Po vytvoření Azure zobrazí stránku Přehled aplikace.
      • Poznamenejte si hodnotu ID aplikace (klienta). Tuto hodnotu použijete později jako ID klienta při vytváření připojovacího řetězce a registraci poskytovatele identit Microsoft Entra s registrací bota.
      • Poznamenejte si hodnotu ID adresáře (tenanta). Tuto hodnotu použijete k registraci této aplikace poskytovatele u robota.
  5. V navigačním podokně vyberte Certifikáty a tajné kódy a vytvořte tajný kód pro vaši aplikaci.

    1. V části Tajné kódy klienta vyberte Nový tajný klíč klienta.
    2. Přidejte popis pro identifikaci tohoto tajného kódu od ostatních, které možná budete muset pro tuto aplikaci vytvořit, například bot login.
    3. V případě vypršení platnosti zvolte dobu, po které vyprší platnost tajného kódu.
    4. Vyberte Přidat.
    5. Před opuštěním certifikátů a tajných kódů zaznamenejte tajný kód. Tuto hodnotu použijete později jako tajný klíč klienta při registraci aplikace Microsoft Entra ID u robota.
  6. V navigačním podokně vyberte oprávnění rozhraní API pro otevření panelu oprávnění rozhraní API. Osvědčeným postupem je explicitně nastavit oprávnění rozhraní API pro aplikaci.

    1. Výběrem možnosti Přidat oprávnění zobrazíte podokno Požadavek na oprávnění rozhraní API.

    2. Pro tuto ukázku vyberte rozhraní Microsoft API a Microsoft Graph.

    3. Zvolte Delegovaná oprávnění a ujistěte se, že jsou vybraná potřebná oprávnění. Tato ukázka vyžaduje tato oprávnění.

      Poznámka:

      Všechna oprávnění označená jako VYŽADUJÍ SOUHLAS SPRÁVCE budou vyžadovat, aby se přihlásil jak uživatel, tak správce tenanta, proto je vhodné, aby váš bot tato oprávnění nepoužíval.

      • openid
      • profil
      • Mail.Read
      • Mail.Odeslat
      • User.Read
      • User.ReadBasic.All
    4. Vyberte Přidat oprávnění. (Při prvním přístupu uživatele k této aplikaci prostřednictvím robota bude muset udělit souhlas.)

Teď máte nakonfigurovanou aplikaci Microsoft Entra ID.

Poznámka:

Při vytváření připojovacího řetězce a registraci zprostředkovatele identity pomocí registrace robota přiřadíte ID aplikace (klienta) a klientský tajný klíč. Viz další část.

Registrace zprostředkovatele identity Microsoft Entra ID u robota

Dalším krokem je registrace zprostředkovatele identity u robota.

  1. Otevřete stránku prostředku vašeho robota Azure Bot v Azure portálu.

  2. Vyberte Nastavení.

  3. V části Nastavení připojení OAuth v dolní části stránky vyberte Přidat nastavení.

  4. Vyplňte formulář následujícím způsobem:

    1. Název. Zadejte název připojení. Použijete ho v kódu robota.

    2. Poskytovatel služeb. Vyberte Microsoft Entra ID , aby se zobrazila pole specifická pro ID Microsoft Entra.

    3. ID klienta. Zadejte ID aplikace (klienta), které jste si poznamenali pro zprostředkovatele identity Microsoft Entra ID.

    4. Tajný klíč klienta. Zadejte tajný klíč, který jste si poznamenali pro zprostředkovatele identity Microsoft Entra ID.

      Tip

      Pokud chcete použít certifikáty, můžete vybrat AAD v2 s poskytovatelem certifikátů . Budete muset udělit oprávnění úložišti tokenů služby Bot Service (appid: 00001111-aaaa-2222-bbbb-3333cccc4444) pro získání certifikátu.

    5. Adresa URL výměny tokenů Nechte ho prázdné, protože se používá jenom pro jednotné přihlašování v Microsoft Entra ID.

    6. ID nájemce. Zadejte ID adresáře (tenanta), které jste si poznamenali dříve pro aplikaci Microsoft Entra ID, nebo běžné v závislosti na podporovaných typech účtů vybraných při vytváření aplikace Azure DD. Pokud se chcete rozhodnout, kterou hodnotu chcete přiřadit, postupujte podle těchto kritérií:

      • Pokud jste při vytváření aplikace Microsoft Entra ID vybrali jenom účty v tomto organizačním adresáři (jenom Microsoft – jeden tenant), zadejte ID tenanta, které jste si poznamenali dříve pro aplikaci Microsoft Entra ID.
      • Pokud jste ale vybrali účty v libovolném adresáři organizace (libovolný adresář Microsoft Entra ID – více tenantů a osobní účty Microsoft, například Xbox, Outlook.com) nebo Účty v libovolném adresáři organizace (adresář Microsoft Entra ID – Více tenantů), zadejte common místo ID tenanta. Jinak aplikace Microsoft Entra ID ověří prostřednictvím tenanta, jehož ID bylo vybráno, a vyloučí osobní účty Microsoft.

      Toto bude tenant přidružený k uživatelům, kteří se můžou ověřit. Další informace naleznete v tématu Tenancy v Microsoft Entra ID.

    7. V části Obory zadejte názvy oprávnění, které jste zvolili při registraci aplikace. Pro účely testování stačí zadat: openid profile.

      Poznámka:

      Pro pole Scopes v Microsoft Entra ID přebírá pole seznam hodnot oddělených mezerami, které rozlišují velká a malá písmena.

  5. Zvolte Uložit.

Poznámka:

Tyto hodnoty umožňují aplikaci přistupovat k datům Office 365 prostřednictvím rozhraní Microsoft Graph API. Adresa URL výměny tokenů by také měla zůstat prázdná, protože se používá pouze pro jednotné přihlašování v ID Microsoft Entra.

Otestování připojení

  1. Výběrem položky připojení otevřete připojení, které jste vytvořili.
  2. V horní části podokna Nastavení připojení poskytovatele služeb vyberte Testovací připojení.
  3. Při prvním spuštění by se měla otevřít nová karta prohlížeče se seznamem oprávnění, která vaše aplikace požaduje, a vyzvat vás k přijetí.
  4. Zvolte Přijmout.
  5. To by vás pak mělo přesměrovat na stránku Test Connection to <your-connection-name> Succeeded.

Tento název připojení teď můžete použít v kódu robota k načtení tokenů uživatele.

Příprava kódu robota

K dokončení tohoto procesu budete potřebovat ID aplikace a heslo robota.

  1. Naklonujte z úložiště GitHub ukázku, se kterou chcete pracovat: Ověřování robota nebo ověřování robota pro Microsoft Graph.

  2. Aktualizovat appsettings.json:

    • Nastavte ConnectionName na název nastavení připojení OAuth, které jste přidali ke svému botovi.

    • Nastavte MicrosoftAppId a MicrosoftAppPassword na ID aplikace a tajný klíč vašeho robota.

      V závislosti na povaze znaků v tajném kódu robota možná budete muset heslo escapovat pomocí XML. Například všechny ampersandy (&) budou muset být kódovány jako &amp;.

    {
      "MicrosoftAppType": "",
      "MicrosoftAppId": "",
      "MicrosoftAppPassword": "",
      "MicrosoftAppTenantId": "",
      "ConnectionName": ""
    }
    

    Pokud chcete používat OAuth v robotovi s rezidencí dat ve veřejném cloudu, musíte do nastavení aplikace přidat následující konfigurace.

    "OAuthUrl": "<Regional-OAuth-Uri>",
    "ToChannelFromBotOAuthScope": "https://api.botframework.com",
    "ToChannelFromBotLoginUrlTemplate": "https://api.botframework.com",
    "PublicAzureChannel": "https://api.botframework.com",
    "ToBotFromChannelOpenIdMetadataUrl": "https://login.botframework.com/v1/.well-known/openidconfiguration",
    "ToBotFromEmulatorOpenIdMetadataUrl": "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration",
    "ToBotFromChannelTokenIssuer": "https://api.botframework.com",
    "ToChannelFromBotLoginUrl": "https://login.microsoftonline.com/botframework.com",
    

    Kde <Regional-OAuth-Url> je jeden z následujících identifikátorů URI:

    Identifikátor URI Popis
    https://europe.api.botframework.com Pro roboty veřejného cloudu s rezidencí dat v Evropě.
    https://unitedstates.api.botframework.com Pro roboty veřejného cloudu s rezidencí dat v USA.
    https://india.api.botframework.com Pro roboty veřejného cloudu s umístěním dat v Indii.
  3. Aktualizovat Startup.cs:

    Pokud chcete použít OAuth v nepřístupných cloudech Azure, jako je cloud státní správy, musíte do souboru Startup.cs přidat následující kód.

    string uri = "<uri-to-use>";
    MicrosoftAppCredentials.TrustServiceUrl(uri);
    OAuthClientConfig.OAuthEndpoint = uri;
    
    

    Kde <uri-to-use> je jeden z následujících identifikátorů URI:

    Identifikátor URI Popis
    https://api.botframework.azure.us Pro cloudové roboty pro státní správu v USA bez požadavků na datovou rezidenci.
    https://api.botframework.com Pro roboty veřejného cloudu bez rezidence dat. Toto je výchozí identifikátor URI a nevyžaduje změnu Startup.cs.

Pokud chcete získat ID aplikace Microsoftu a hodnoty hesel aplikace Microsoftu, přečtěte si téma Získání registračního hesla.

Poznámka:

Teď můžete tento kód robota publikovat do předplatného Azure (vybrat projekt pravým tlačítkem a zvolit Publikovat), ale tento článek není nutný. Budete muset nastavit konfiguraci publikování, která používá plán aplikace a hostingu, který jste použili při konfiguraci robota na webu Azure Portal.

Testování robota pomocí emulátoru

Pokud jste to ještě neudělali, nainstalujte bot Framework Emulator. Podívejte se také na Ladění pomocí emulátoru.

Aby ukázkové přihlášení robota fungovalo, musíte nakonfigurovat emulátor, jak je znázorněno v části Konfigurace emulátoru pro ověřování.

Testování

Po nakonfigurování ověřovacího mechanismu můžete provést vlastní ukázkové testování robota.

Poznámka:

Můžete být požádáni o zadání magického kódu, kvůli tomu, jak je ukázka robota implementována. Tento magický kód je součástí dokumentu RFC#7636 a je zde k přidání dalšího prvku zabezpečení. Odebráním magického kódu existuje zvýšené bezpečnostní riziko. To lze zmírnit pomocí Direct Line s povoleným rozšířeným ověřováním. Další informace najdete v části Bot Framework: rozšířené ověřování.

  1. Spusťte ukázku robota místně na svém počítači.
  2. Spusťte emulátor.
  3. Po připojení k robotovi budete muset zadat ID a heslo aplikace robota.
    • ID aplikace a heslo získáte z registrace aplikace Azure. Jedná se o stejné hodnoty, které jste přiřadili aplikaci robota v souboru appsettings.json nebo .env souboru. V emulátoru přiřadíte tyto hodnoty v konfiguračním souboru nebo při prvním připojení k robotovi.
    • Pokud jste potřebovali zakódovat heslo pomocí XML ve vašem kódu robota, musíte to udělat i tady.
  4. Zadáním help zobrazíte seznam dostupných příkazů robota a otestujete funkce ověřování.
  5. Jakmile se přihlásíte, nemusíte přihlašovací údaje zadávat znovu, dokud se neodhlásíte.
  6. Pokud se chcete odhlásit a zrušit ověřování, zadejte logout.

Poznámka:

Ověřování robota vyžaduje použití služby Bot Connector. Služba přistupuje k informacím z vašeho prostředku Azure Bot.

Příklad ověřování

V ukázce ověřování robota je dialogové okno navržené k načtení tokenu uživatele po přihlášení uživatele.

Ukázková konverzace s ukázkovým robotem pro ověřování

Příklad ověřování pro Microsoft Graph

V ukázce ověřování robota pro Microsoft Graph je dialogové okno navržené tak, aby přijímalo omezenou sadu příkazů po přihlášení uživatele.

Ukázková konverzace s ukázkovým robotem pro ověřování v Microsoft Graphu


Další informace

Když uživatel požádá robota, aby udělal něco, co vyžaduje, aby se uživatel přihlásil, může robot použít OAuthPrompt k zahájení načítání tokenu pro dané připojení. Tok načítání tokenu OAuthPrompt se skládá z:

  1. Zkontrolujte, jestli služba Azure AI Bot Service už má token pro aktuálního uživatele a připojení. Pokud token existuje, vrátí se token.
  2. Pokud Azure AI Bot Service nemá token uložený v mezipaměti, vytvoří se tlačítko pro přihlášení, OAuthCard které uživatel může vybrat.
  3. Jakmile uživatel klikne na OAuthCard přihlašovací tlačítko, služba Azure AI Bot Service buď odešle botovi token uživatele přímo, nebo uživateli zobrazí 6místný ověřovací kód k zadání do okna chatu.
  4. Pokud se uživateli zobrazí ověřovací kód, robot si tento ověřovací kód pro token uživatele vymění.

Následující části popisují, jak ukázka implementuje některé běžné úlohy ověřování.

Použití výzvy OAuth k přihlášení uživatele a získání tokenu

Diagram architektury pro ukázku jazyka C#.

Dialogy\MainDialog.cs

V jeho konstruktoru přidejte výzvu OAuth do MainDialogu . V této části se hodnota názvu připojení načetla ze souboru appsettings.json.

AddDialog(new OAuthPrompt(
    nameof(OAuthPrompt),
    new OAuthPromptSettings
    {
        ConnectionName = ConnectionName,
        Text = "Please Sign In",
        Title = "Sign In",
        Timeout = 300000, // User has 5 minutes to login (1000 * 60 * 5)
    }));

V rámci kroku dialogového okna spusťte BeginDialogAsync výzvu OAuth, která uživatele vyzve k přihlášení.

  • Pokud je uživatel již přihlášený, vygeneruje se událost odpovědi tokenu bez výzvy uživatele.
  • V opačném případě se uživateli zobrazí výzva k přihlášení. Služba Azure AI Bot Service odešle událost s odpovědí na token poté, co se uživatel pokusí přihlásit.
return await stepContext.BeginDialogAsync(nameof(OAuthPrompt), null, cancellationToken);

V následujícím dialogovém okně zkontrolujte přítomnost tokenu ve výsledku z předchozího kroku. Pokud není null, uživatel se úspěšně přihlásil.

// Get the token from the previous step. Note that we could also have gotten the
// token directly from the prompt itself. There is an example of this in the next method.
var tokenResponse = (TokenResponse)stepContext.Result;

Počkejte na událost TokenResponseEvent

Když spustíte výzvu OAuth, čeká na událost odpovědi tokenu, ze které získá uživatelský token.

Roboti\AuthBot.cs

AuthBot je odvozen z ActivityHandler, a explicitně zpracovává aktivity události pro zpracování odpovědi na tokeny. Tady pokračujeme v aktivním dialogovém okně, které umožňuje výzvě OAuth zpracovat událost a načíst token.

protected override async Task OnTokenResponseEventAsync(ITurnContext<IEventActivity> turnContext, CancellationToken cancellationToken)
{
    Logger.LogInformation("Running dialog with Token Response Event Activity.");

    // Run the Dialog with the new Token Response Event Activity.
    await Dialog.RunAsync(turnContext, ConversationState.CreateProperty<DialogState>(nameof(DialogState)), cancellationToken);
}

Odhlásit uživatele

Osvědčeným postupem je umožnit uživatelům explicitně odhlásit se, místo abyste se museli spoléhat na vypršení časového limitu připojení.

Dialogy\LogoutDialog.cs

private async Task<DialogTurnResult> InterruptAsync(DialogContext innerDc, CancellationToken cancellationToken = default(CancellationToken))
{
    if (innerDc.Context.Activity.Type == ActivityTypes.Message)
    {
        var text = innerDc.Context.Activity.Text.ToLowerInvariant();

        if (text == "logout")
        {
            // The UserTokenClient encapsulates the authentication processes.
            var userTokenClient = innerDc.Context.TurnState.Get<UserTokenClient>();
            await userTokenClient.SignOutUserAsync(innerDc.Context.Activity.From.Id, ConnectionName, innerDc.Context.Activity.ChannelId, cancellationToken).ConfigureAwait(false);

            await innerDc.Context.SendActivityAsync(MessageFactory.Text("You have been signed out."), cancellationToken);
            return await innerDc.CancelAllDialogsAsync(cancellationToken);
        }
    }

    return null;
}

Přidání ověřování od Teams

OAuth se v Teams zpracovává jinak než v jiných kanálech. Ukázka robota pro ověřování Teams (v C#, JavaScriptu, Javě nebo Pythonu) ukazuje, jak správně implementovat ověřování pro Teams.

Další čtení

  • Doplňkové zdroje Bot Framework zahrnují odkazy na další podporu.
  • Úložiště sady SDK služby Bot Framework obsahuje další informace o úložištích, ukázkách, nástrojích a specifikacích přidružených k sadě Bot Builder SDK.