Lägga till autentisering i en robot

GÄLLER FÖR: SDK v4

Azure AI Bot Service v4 SDK underlättar utvecklingen av robotar som kan komma åt onlineresurser som kräver användarautentisering. Roboten behöver inte hantera autentiseringstoken eftersom Azure gör det åt dig att använda OAuth 2.0 för att generera en token baserat på varje användares autentiseringsuppgifter. Roboten använder den token som genereras av Azure för att få åtkomst till dessa resurser. På så sätt behöver användaren inte ange ID och lösenord till roboten för att få åtkomst till en säker resurs utan bara till en betrodd identitetsprovider.

En översikt över hur Bot Framework hanterar den här typen av autentisering finns i Användarautentisering.

Den här artikeln refererar till två exempel. En visar hur du hämtar en autentiseringstoken. Den andra är mer komplex och visar hur du kommer åt Microsoft Graph för användarens räkning. I båda fallen kan du använda Azure AD v1 eller v2 som identitetsprovider för att hämta en OAuth-token för roboten. Den här artikeln beskriver hur du:

  • Skapa en Azure Bot-resurs
  • Skapa Microsoft Entra ID-identitetsprovidern
  • Registrera Microsoft Entra ID-identitetsprovidern med roboten
  • Förbereda robotkoden

När du har slutfört den här artikeln har du en robot som kan svara på några enkla uppgifter. I Microsoft Graph-exemplet kan du skicka ett e-postmeddelande, visa vem du är och kontrollera de senaste e-postmeddelandena. Du behöver inte publicera roboten för att testa OAuth-funktionerna. Roboten behöver dock ett giltigt Azure-app-ID och lösenord.

Kommentar

Bot Framework JavaScript-, C#- och Python-SDK:erna fortsätter att stödjas, men Java SDK dras tillbaka med slutligt långsiktigt stöd som slutar i november 2023.

Befintliga robotar som skapats med Java SDK fortsätter att fungera.

Om du vill skapa en ny robot kan du använda Microsoft Copilot Studio och läsa om hur du väljer rätt copilot-lösning.

Mer information finns i Framtiden för robotbygge.

Överväganden för webbchatt och direktlinje

Viktigt!

Du måste använda Direct Line med förbättrad autentisering aktiverad för att minska säkerhetsriskerna när du ansluter till en robot med hjälp av webchattkontrollen. Mer information finns i Utökad direktlinjeautentisering.

Förutsättningar

  • Kunskap om grunderna i roboten, hantering av tillstånd, dialogrutebiblioteket och hur du implementerar sekventiellt konversationsflöde och hur du återanvänder dialogrutor.

  • Kunskap om Azure- och OAuth 2.0-utveckling.

  • Visual Studio 2017 eller senare för .NET.

  • Node.js för JavaScript.

  • Python 3.8+ för Python.

  • Ett av exemplen nedan.

    Exempel BotBuilder-version Demonstrationer
    Autentisering i C# eller JavaScript eller Java eller Python v4 OAuthCard-stöd
    Autentisering för Microsoft Graph i C# eller JavaScript eller Java eller Python v4 Stöd för Microsoft Graph API med OAuth 2.0
    Autentisering för Microsoft Teams i C# eller JavaScript eller Java eller Python v4 Stöd för Microsoft Graph API med OAuth 2.0

    Om du vill köra exemplen som refereras i den här artikeln behöver du:

    • Ett Microsoft Entra-ID-program som du kan registrera en robotresurs med i Azure. Med det här programmet kan roboten komma åt en extern skyddad resurs, till exempel Microsoft Graph. Det gör också att användaren kan kommunicera med roboten via flera kanaler, till exempel webbchatt.
    • Ett separat Microsoft Entra-ID-program som fungerar som identitetsprovider. Det här programmet tillhandahåller de autentiseringsuppgifter som krävs för att upprätta en OAuth-anslutning mellan roboten och den skyddade resursen. Observera att den här artikeln använder Active Directory som identitetsprovider. Många andra leverantörer stöds också.

Viktigt!

När du registrerar en robot i Azure tilldelas den ett Microsoft Entra-ID-program. Det här programmet skyddar dock kanal-till-robot-åtkomst. Du behöver ytterligare ett Microsoft Entra-ID-program för varje externt skyddad resurs som du vill att roboten ska få åtkomst till för användarens räkning.

Skapa resursen

Skapa Azure Bot-resursen så att du kan registrera din robot med Azure AI Bot Service.

Dricks

Det går inte att skapa nya registreringsresurser för webbappsrobotar och robotkanaler . Alla befintliga resurser som är konfigurerade och distribuerade fortsätter dock att fungera. Robotar som skapats från en VSIX- eller Yeoman-mall från SDK version 4.14.1.2 eller senare innehåller ARM-mallar som genererar en Azure Bot-resurs.

  1. Gå till Azure-portalen.

  2. I den högra rutan väljer du Skapa en resurs.

  3. I sökrutan anger du botoch trycker sedan på Retur.

  4. Välj Azure Bot-kortet.

    Välj Azure-robotresurs

  5. Välj Skapa.

  6. Ange värden i de obligatoriska fälten och granska och uppdatera inställningarna.

    1. Ange information under Projektinformation. Välj om din robot ska ha global eller lokal dataplacering. För närvarande är funktionen lokal datahemvist tillgänglig för resurser i regionen "westeurope" och "centralindia". Mer information finns i Regionalisering i Azure AI Bot Service.

      Inställningarna för projektinformation för en Azure Bot-resurs

    2. Ange information under Microsoft App-ID. Välj hur robotidentiteten ska hanteras i Azure och om du vill skapa en ny identitet eller använda en befintlig.

      Microsofts app-ID-inställningar för en Azure Bot-resurs

  7. Välj Granska + skapa.

  8. Om valideringen godkänns väljer du Skapa.

  9. När distributionen är klar väljer du Gå till resurs. Du bör se roboten och relaterade resurser i den resursgrupp som du har valt.

  10. Om du inte redan har Bot Framework SDK väljer du Ladda ned från GitHub för att lära dig hur du använder paketen för önskat språk.

    Skapa robot i SDK

Nu är du redo att skapa din robot med Bot Framework SDK.

Dricks

När Azure skapar en ny Azure Bot-resurs med en enda klientorganisation eller flera klientorganisationer med ett nytt app-ID genereras även ett lösenord.

Information om robotidentitet

Följ de här stegen för att lägga till identitetsinformation i robotens konfigurationsfil. Filen skiljer sig beroende på vilket programmeringsspråk du använder för att skapa roboten.

Viktigt!

Java-versionen av Bot Framework SDK stöder endast robotar med flera klientorganisationer. C#-, JavaScript- och Python-versionerna stöder alla tre programtyperna för att hantera robotens identitet.

Språk Filnamn Kommentar
C# appsettings.json Stöder alla tre programtyperna för att hantera robotens identitet.
JavaScript .Env Stöder alla tre programtyperna för att hantera robotens identitet.
Java application.properties Stöder endast robotar med flera klientorganisationer.
Python config.py Stöder alla tre programtyperna för att hantera robotens identitet.

Identitetsinformationen som du behöver lägga till beror på robotens programtyp. Ange följande värden i konfigurationsfilen.

Tillgänglig för C#-, JavaScript- och Python-robotar.

Property Värde
MicrosoftAppType UserAssignedMSI
MicrosoftAppId Klient-ID för den användartilldelade hanterade identiteten.
MicrosoftAppPassword Ej tillämpbart. Lämna detta tomt för en användartilldelad hanterad identitetsrobot.
MicrosoftAppTenantId Klientorganisations-ID för den användartilldelade hanterade identiteten.

Så här uppdaterar du din apptjänst

Om du har en befintlig App Service-resurs (webbapp) för din robot och roboten är ett användartilldelat program för hanterad identitet kan du behöva uppdatera robotens apptjänst:

  1. Gå till App Service-bladet för robotens webbapp.
  2. Under Inställningar väljer du Identitet.
  3. På bladet Identitet väljer du fliken Användartilldelad och Lägg till (+).
  4. På bladet Lägg till användartilldelad hanterad identitet:
    1. Välj din prenumeration.

    2. För Användartilldelade hanterade identiteter väljer du den hanterade identiteten för din robot. Om den hanterade identiteten genererades automatiskt åt dig har den samma namn som roboten.

    3. Välj Lägg till för att använda den här identiteten för din robot.

      Bladet App Service-identitet med den hanterade identiteten för den valda roboten.

Hämta din app eller ditt klient-ID

Så här hämtar du robotens app- eller klient-ID:

  1. Gå till Azure Bot-resursbladet för din robot.
  2. Gå till robotens konfigurationsblad. På det här bladet kan du kopiera robotens Microsoft App-ID eller appklient-ID.

Så här genererar du ett nytt lösenord

Robotar med en klientorganisation och flera klientorganisationer har en apphemlighet eller ett lösenord som du behöver för vissa åtgärder. Azure AI Bot Service döljer din robothemlighet. Ägaren till robotens App Service-resurs kan dock generera ett nytt lösenord:

  1. Gå till Azure Bot-resursbladet för din robot.
  2. Gå till robotens konfigurationsblad.
  3. Välj Hantera bredvid Microsoft App-ID för att gå till bladet Certifikat + hemligheter för apptjänsten.
  4. Följ anvisningarna på bladet för att skapa en ny klienthemlighet och registrera värdet på en säker plats.

Identitetstjänst för Microsoft Entra-ID

Microsoft Entra ID är en molnidentitetstjänst som gör att du kan skapa program som loggar in användare på ett säkert sätt med hjälp av branschstandardprotokoll som OAuth 2.0.

Du kan använda någon av dessa två identitetstjänster:

  1. Microsoft Entra ID Developer Platform (v1.0). Kallas även Azure AD v1-slutpunkt, som gör att du kan skapa appar som loggar in användare på ett säkert sätt med ett Microsoft-arbets- eller skolkonto. Mer information finns i Översikt över Microsoft Entra-ID för utvecklare (v1.0).
  2. Microsoft platforma za identitete (v2.0). Kallas även Microsoft Entra ID-slutpunkt, vilket är en utveckling av Azure AD-plattformen (v1.0). Det gör att du kan skapa program som loggar in på alla Microsoft-identitetsprovidrar och hämta token för att anropa Microsoft-API:er, till exempel Microsoft Graph, eller andra API:er som utvecklare har skapat. Mer information finns i översikten över Microsoft platforma za identitete (v2.0).

Information om skillnaderna mellan v1- och v2-slutpunkterna finns i Varför uppdateras till Microsoft platforma za identitete (v2.0)?. Fullständig information finns i Microsoft platforma za identitete (tidigare Microsoft Entra-ID för utvecklare).

Skapa Microsoft Entra ID-identitetsprovidern

Det här avsnittet visar hur du skapar en Microsoft Entra ID-identitetsprovider som använder OAuth 2.0 för att autentisera roboten. Du kan använda Azure AD v1- eller Microsoft Entra-ID-slutpunkter.

Dricks

Du måste skapa och registrera Microsoft Entra-ID-programmet i en klientorganisation där du kan samtycka till att delegera behörigheter som begärs av ett program.

  1. Öppna microsoft entra-ID-panelen i Azure-portalen. Om du inte är i rätt klient väljer du Växla katalog för att växla till rätt klientorganisation. (Information om hur du skapar en klient finns i Öppna portalen och skapa en klient.)

  2. Öppna panelen Appregistreringar .

  3. I panelen Appregistreringar väljer du Ny registrering.

  4. Fyll i de obligatoriska fälten och skapa appregistreringen.

    1. Namnge ditt program.

    2. Välj kontotyper som stöds för ditt program. (Något av dessa alternativ fungerar med det här exemplet.)

    3. För omdirigerings-URI väljer du Webb och anger URL:en till en av de OAuth-omdirigerings-URL:er som stöds.

    4. Välj Registrera.

      • När den har skapats visar Azure sidan Översikt för appen.
      • Registrera värdet program-ID (klient). Du använder det här värdet senare som klient-ID när du skapar niska veze och registrerar Microsoft Entra-ID-providern med robotregistreringen.
      • Registrera ID-värdet för Katalog (klientorganisation). Du använder det här värdet för att registrera det här providerprogrammet med din robot.
  5. I navigeringsfönstret väljer du Certifikat och hemligheter för att skapa en hemlighet för ditt program.

    1. Under Klienthemligheter väljer du Ny klienthemlighet.
    2. Lägg till en beskrivning för att identifiera den här hemligheten från andra som du kan behöva skapa för den här appen, till exempel bot login.
    3. För Upphör att gälla väljer du en tidsperiod efter vilken hemligheten upphör att gälla.
    4. Markera Lägga till.
    5. Registrera hemligheten innan du lämnar Certifikat och hemligheter. Du använder det här värdet senare som klienthemlighet när du registrerar ditt Microsoft Entra-ID-program med din robot.
  6. I navigeringsfönstret väljer du API-behörigheter för att öppna panelen API-behörigheter . Det är en bra idé att uttryckligen ange API-behörigheterna för appen.

    1. Välj Lägg till en behörighet för att visa fönstret Api-behörigheter för begäran.

    2. I det här exemplet väljer du Microsoft API:er och Microsoft Graph.

    3. Välj Delegerade behörigheter och kontrollera att de behörigheter du behöver är markerade. Det här exemplet kräver dessa behörigheter.

      Kommentar

      Alla behörigheter som har markerats som ADMINISTRATÖRSMEDGIVANDE KRÄVS kräver att både en användare och en klientorganisationsadministratör loggar in, så för din robot tenderar att hålla sig borta från dessa.

      • openid
      • profil
      • Mail.Read
      • Mail.Send
      • User.Read
      • User.ReadBasic.All
    4. Välj Lägg till behörigheter. (Första gången en användare får åtkomst till den här appen via roboten måste de bevilja medgivande.)

Nu har du konfigurerat ett Microsoft Entra-ID-program.

Kommentar

Du tilldelar program-ID :t (klient) och klienthemligheten när du skapar niska veze och registrerar identitetsprovidern med robotregistreringen. Se nästa avsnitt.

Registrera Microsoft Entra ID-identitetsprovidern med roboten

Nästa steg är att registrera din identitetsprovider med din robot.

  1. Öppna robotens Resurssida för Azure Bot i Azure-portalen.

  2. Välj Inställningar.

  3. Under OAuth-anslutningsinställningar längst ned på sidan väljer du Lägg till inställning.

  4. Fyll i formuläret på följande sätt:

    1. Namn. Ange ett namn för anslutningen. Du använder den i robotkoden.

    2. Tjänstleverantör. Välj Microsoft Entra-ID för att visa Microsoft Entra ID-specifika fält.

    3. Klient-ID. Ange det program-ID (klient)-ID som du registrerade för din Microsoft Entra ID-identitetsprovider.

    4. Klienthemlighet. Ange hemligheten som du registrerade för din Microsoft Entra ID-identitetsprovider.

      Dricks

      Om du vill använda certifikat kan du välja AAD v2 med certifikatprovidern . Du måste ge Bot Service Token Store (appid: 5b404cf4-a79d-4cfe-b866-24bf8e1a4921) behörighet att hämta certifikatet.

    5. Token Exchange URL. Lämna det tomt eftersom det endast används för enkel inloggning i Microsoft Entra-ID.

    6. Klientorganisations-ID. Ange det katalog-ID (klient)-ID som du registrerade tidigare för din Microsoft Entra-ID-app eller vanligt beroende på vilka kontotyper som stöds som valdes när du skapade Azure DD-appen. Följ dessa kriterier för att bestämma vilket värde som ska tilldelas:

      • När du skapar Microsoft Entra-ID-appen anger du det klient-ID som du registrerade tidigare för Microsoft Entra-ID-appen om du valde Endast Konton i den här organisationskatalogen (endast Microsoft – enskild klientorganisation).
      • Men om du har valt Konton i någon organisationskatalog (Microsoft Entra-ID-katalog – Flera klient- och personliga Microsoft-konton, t.ex. Xbox, Outlook.com) eller Konton i en organisationskatalog (Microsoft Entra ID-katalog – Flera klientorganisationer), anger du common i stället för ett klient-ID. Annars verifierar Microsoft Entra-ID-appen via klientorganisationen vars ID har valts och exkluderar personliga Microsoft-konton.

      Det här är den klientorganisation som är associerad med de användare som kan autentiseras. Mer information finns i Innehavare i Microsoft Entra-ID.

    7. För Omfång anger du namnen på den behörighet som du valde från programregistreringen. I testsyfte kan du bara ange: openid profile.

      Kommentar

      För Microsoft Entra-ID tar fältet Scopes en skiftlägeskänslig , utrymmesavgränsad lista med värden.

  5. Välj Spara.

Kommentar

Dessa värden gör att ditt program kan komma åt Office 365-data via Microsoft Graph API. Token Exchange-URL:en bör också lämnas tom eftersom den endast används för enkel inloggning i Microsoft Entra-ID.

Testa anslutningen

  1. Välj i anslutningsposten för att öppna anslutningen som du skapade.
  2. Välj Testa anslutning överst i fönstret Anslutningsinställning för tjänstleverantör.
  3. Första gången bör du öppna en ny webbläsarflik som visar de behörigheter som appen begär och uppmanar dig att acceptera.
  4. Välj Godkänn.
  5. Detta bör sedan omdirigera dig till en testanslutning till <sidan med ditt anslutningsnamn> Lyckades .

Du kan nu använda det här anslutningsnamnet i robotkoden för att hämta användartoken.

Förbereda robotkoden

Du behöver robotens app-ID och lösenord för att slutföra den här processen.

  1. Klona från GitHub-lagringsplatsen det exempel som du vill arbeta med: Robotautentisering eller robotautentisering för Microsoft Graph.

  2. Uppdatera appsettings.json:

    • Ange ConnectionName namnet på den OAuth-anslutningsinställning som du lade till i roboten.

    • Ange MicrosoftAppId och MicrosoftAppPassword till robotens app-ID och apphemlighet.

      Beroende på tecknen i robothemligheten kan du behöva undvika lösenordet för XML. Till exempel måste alla &ers (&) kodas som &amp;.

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

    Om du vill använda OAuth i roboten med datahemvist i det offentliga molnet måste du lägga till följande konfigurationer i dina apparinställningar

    "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",
    

    Där <Regional-OAuth-Url> är en av följande URI:er:

    URI beskrivning
    https://europe.api.botframework.com För offentliga molnrobotar med datahemvist i Europa.
    https://unitedstates.api.botframework.com För offentliga molnrobotar med datahemvist i USA.
    https://india.api.botframework.com För offentliga molnrobotar med datahemvist i Indien.
  3. Uppdatera Startup.cs:

    Om du vill använda OAuth i icke-offentliga Azure-moln, till exempel myndighetsmolnet, måste du lägga till följande kod i filen Startup.cs .

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

    Där <uri-to-use> är en av följande URI:er:

    URI beskrivning
    https://api.botframework.azure.us För amerikanska myndighetsmolnrobotar utan datahemvist.
    https://api.botframework.com För offentliga molnrobotar utan datahemvist. Detta är standard-URI:n och kräver ingen ändring av Startup.cs.

Information om hur du hämtar microsofts app-ID och lösenordsvärden för Microsoft-appar finns i Hämta registreringslösenord.

Kommentar

Du kan nu publicera den här robotkoden till din Azure-prenumeration (högerklicka i projektet och välj Publicera), men det är inte nödvändigt för den här artikeln. Du skulle behöva konfigurera en publiceringskonfiguration som använder programmet och värdplanen som du använde när du konfigurerade roboten i Azure-portalen.

Testa roboten med emulatorn

Om du inte redan har gjort det installerar du Bot Framework-emulatorn. Se även Felsöka med emulatorn.

För att robotexemplet ska fungera måste du konfigurera emulatorn enligt beskrivningen i Konfigurera emulatorn för autentisering.

Testning

När du har konfigurerat autentiseringsmekanismen kan du utföra den faktiska robotexempletestningen.

Kommentar

Du kan bli ombedd att ange en magisk kod eftersom robotexemplet implementeras. Den här magiska koden är en del av RFC#7636 och finns där för att lägga till ett extra säkerhetselement. Genom att ta bort den magiska koden finns det en ökad säkerhetsrisk. Detta kan minimeras med hjälp av Direct Line med förbättrad autentisering aktiverad. Mer information finns i Förbättrad autentisering i Bot Framework.

  1. Kör robotexemplet lokalt på datorn.
  2. Starta emulatorn.
  3. Du måste ange robotens app-ID och lösenord när du ansluter till roboten.
    • Du får app-ID:t och lösenordet från Azure-appregistreringen. Det här är samma värden som du tilldelade robotappen appsettings.json i filen eller .env . I emulatorn tilldelar du dessa värden i konfigurationsfilen eller första gången du ansluter till roboten.
    • Om du behöver XML-escape-lösenordet i robotkoden måste du också göra det här.
  4. Skriv help för att se en lista över tillgängliga kommandon för roboten och testa autentiseringsfunktionerna.
  5. När du har loggat in behöver du inte ange dina autentiseringsuppgifter igen förrän du har loggat ut.
  6. Om du vill logga ut och avbryta autentiseringen skriver du logout.

Kommentar

Robotautentisering kräver användning av Bot Connector-tjänsten. Tjänsten kommer åt information från din Azure Bot-resurs.

Autentiseringsexempel

I exemplet med robotautentisering är dialogrutan utformad för att hämta användartoken när användaren har loggat in.

Exempelkonversation med exempelroboten för autentisering.

Autentisering för Microsoft Graph-exempel

I robotautentiseringen för Microsoft Graph-exemplet är dialogrutan utformad för att acceptera en begränsad uppsättning kommandon när användaren har loggat in.

Exempelkonversation med exempelroboten för Microsoft Graph-autentisering.


Ytterligare information

När en användare ber roboten att göra något som kräver att roboten har användaren inloggad kan roboten använda en OAuthPrompt för att initiera hämtning av en token för en viss anslutning. OAuthPrompt Skapar ett flöde för tokenhämtning som består av:

  1. Kontrollera om Azure AI Bot Service redan har en token för den aktuella användaren och anslutningen. Om det finns en token returneras token.
  2. Om Azure AI Bot Service inte har en cachelagrad token skapas en OAuthCard som är en inloggningsknapp som användaren kan välja på.
  3. När användaren har valt inloggningsknappen OAuthCard skickar Azure AI Bot Service antingen roboten användarens token direkt eller presenterar användaren med en 6-siffrig autentiseringskod som ska anges i chattfönstret.
  4. Om användaren visas med en autentiseringskod byter roboten den här autentiseringskoden mot användarens token.

I följande avsnitt beskrivs hur exemplet implementerar några vanliga autentiseringsuppgifter.

Använd en OAuth-uppmaning för att logga in användaren och hämta en token

Arkitekturdiagram för C#-exemplet.

Dialogrutor\MainDialog.cs

Lägg till en OAuth-prompt till MainDialog i konstruktorn. Här hämtades värdet för anslutningsnamnet från filen 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)
    }));

I ett dialogsteg använder du BeginDialogAsync för att starta OAuth-prompten, som ber användaren att logga in.

  • Om användaren redan är inloggad genereras en tokensvarshändelse utan att användaren uppmanas att göra det.
  • Annars uppmanas användaren att logga in. Azure AI Bot Service skickar tokensvarshändelsen när användaren försöker logga in.
return await stepContext.BeginDialogAsync(nameof(OAuthPrompt), null, cancellationToken);

I följande dialogsteg kontrollerar du om det finns en token i resultatet från föregående steg. Om den inte är null har användaren loggat in.

// 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;

Vänta på en TokenResponseEvent

När du startar en OAuth-fråga väntar den på en tokensvarshändelse, från vilken användarens token hämtas.

Robotar\AuthBot.cs

AuthBot härleder från ActivityHandler och hanterar uttryckligen händelseaktiviteter för tokensvar. Här fortsätter vi den aktiva dialogrutan, vilket gör att OAuth-prompten kan bearbeta händelsen och hämta 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);
}

Logga ut användaren

Det är bästa praxis att låta användarna uttryckligen logga ut, i stället för att förlita sig på att anslutningen överskrider tidsgränsen.

Dialogrutor\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;
}

Lägga till Teams-autentisering

OAuth hanteras annorlunda i Teams än i andra kanaler. Exempel på Teams-autentiseringsrobot (i C#, JavaScript, Java eller Python) visar hur du implementerar autentisering för Teams korrekt.

Ytterligare läsning