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

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 robota použít Azure AD v1 nebo v2. Tento článek popisuje, jak:

  • Vytvoření prostředku Robota Azure
  • Vytvoření 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ů.

důležité informace o Webový chat a přímé přímce

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 Rozšířené ověřování direct line.

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 mezi kanály a roboty. 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ření prostředku

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 Robota Azure.

  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 robota Azure.

    Výběr prostředku robota 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 místní rezidence dat dostupná pro prostředky v oblasti "westeurope" a "centralindia". Další informace najdete v tématu Regionalizace ve službě Azure AI Bot Service.

      Nastavení podrobností 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 Sady SDK služby Bot Framework v Javě podporuje pouze roboty s více tenanty. Verze C#, JavaScript a Python podporují všechny tři typy aplikací pro správu identity robota.

Jazyk Název souboru Notes
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 spravované identity přiřazené uživatelem.
MicrosoftAppPassword Nevztahuje se. Ponechte toto pole prázdné pro robota spravované identity přiřazeného uživatelem.
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 robota a robot je aplikace spravované identity přiřazená uživatelem, možná budete muset aktualizovat službu App Service vašeho robota:

  1. Přejděte do okna Služby App Service pro webovou aplikaci vašeho robota.
  2. V části Nastavení vyberte Identita.
  3. V okně Identita vyberte kartu Přiřazené uživatelem a Přidejte (+).
  4. V okně Přidat spravovanou identitu přiřazenou uživatelem:
    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

Získání ID aplikace nebo tenanta

Získání ID aplikace nebo tenanta robota:

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

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 tajný klíč robota. Vlastník prostředku služby App Service robota ale může vygenerovat nové heslo:

  1. Přejděte do okna prostředku Robota Azure pro vašeho robota.
  2. Přejděte do okna Konfigurace robota.
  3. Výběrem možnosti Spravovat vedle ID aplikace Microsoft přejděte do okna Certifikáty a tajné kódy služby App Service.
  4. Podle pokynů v okně vytvořte nový tajný klíč klienta a poznamenejte si hodnotu na bezpečném místě.

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ření zprostředkovatele 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 v1 nebo Microsoft Entra ID.

Tip

Budete muset vytvořit a zaregistrovat aplikaci Microsoft Entra ID v tenantovi, ve kterém můžete souhlasit s delegováním oprávnění požadovaných 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. U identifikátoru URI přesměrování vyberte web a nastavte adresu URL na jednu z podporovaných adres URL přesměrování OAuth.

    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í řetězec a registraci zprostředkovatele ID Microsoft Entra s registrací robota.
      • 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 Oprávnění rozhraní API žádosti.

    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 SOUHLAS SPRÁVCE VYŽADUJÍ , aby se uživatel i správce tenanta přihlásili, takže robot má tendenci zůstat pryč od těchto oprávnění.

      • openid
      • profil
      • Mail.Read
      • Mail.Send
      • 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í řetězec a registraci zprostředkovatele identity pomocí registrace robota přiřadíte ID aplikace (klienta) a tajný klíč klienta. Viz další část.

Registrace zprostředkovatele identity Microsoft Entra ID u robota

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

  1. Na webu Azure Portal otevřete stránku prostředku robota Azure Bot vašeho robota.

  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 úložiště tokenů služby Bot Service (appid: 5b404cf4-a79d-4cfe-b866-24bf8e1a4921) oprávnění k 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 tenanta. 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čeno 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 Tenantancy 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:

      Pole Obory v poli Microsoft Entra ID přebírá seznam hodnot oddělených písmeny s rozlišováním velkých a malých písmen.

  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 testovací připojení na <stránku s názvem> úspěšného připojení.

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 do robota.

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

      V závislosti na znaménech znaků v tajném kódu robota možná budete muset utéct heslem 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 jedna 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 rezidencí 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 jedna z následujících identifikátorů URI:

    Identifikátor URI Popis
    https://api.botframework.azure.us Pro USA roboty cloudu pro státní správu bez rezidence dat.
    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. Viz také 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, protože způsob implementace ukázky robota. 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 je možné zmírnit pomocí direct line s povoleným rozšířeným ověřováním. Další informace najdete v tématu Rozšířené ověřování bot Framework.

  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 potřebujete heslo v kódu robota utéct kódem XML, 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í. Vytvoří OAuthPrompt tok načítání tokenu, který 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 je token, 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 vybere na OAuthCard přihlašovacím tlačítku, Azure AI Bot Service buď odešle robota token uživatele přímo, nebo ho předá 6místným ověřovacím kódem pro 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 z appsettings.json souboru načetla hodnota názvu připojení.

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 odpovědi tokenu po pokusu uživatele o přihlášení.
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;

Čekání na tokenResponseEvent

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

Roboti\AuthBot.cs

AuthBot odvozuje ActivityHandler a explicitně zpracovává aktivity událostí 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í 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ší texty

  • Další prostředky služby Bot Framework obsahují 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.