인증 형식Authentication types

적용 대상: SDK v4APPLIES TO: SDK v4

Bot 프레임 워크에서 봇 인증사용자 인증 의 두 가지 광범위 한 인증 범주가 있습니다.In the Bot Framework, two broad authentication categories exist: bot authentication and user authentication. 각에는 보안 리소스에 대 한 액세스를 허용 하는 연결 된 토큰이 있습니다.Each has an associated token to allow access to secured resources. 다음 그림은 봇 및 사용자 인증에 관련 된 요소를 보여 줍니다.The following figure shows the elements involved in both bot and user authentication.

bot framework 인증 컨텍스트

이 그림에서:In this figure:

  • 호스트 플랫폼 은 봇 호스팅 플랫폼입니다.Host Platform is the bot hosting platform. Azure 또는 선택한 호스트 플랫폼 일 수 있습니다.It can be Azure or any host platform you chose.
  • 봇 커넥터 서비스 는 봇과 채널 간의 통신을 용이 하 게 합니다.Bot Connector Service facilitates communication between a bot and a channel. 채널에서 받은 메시지를 활동 개체로 변환 하 고,이를 봇의 메시징 끝점으로 보냅니다.It converts messages received from channels into activity objects, and send them to the bot's messaging endpoint. 마찬가지로 봇에서 받은 활동 개체를 채널에서 인식할 수 있는 메시지로 변환 하 고 채널에 보냅니다.Likewise, it converts activity objects received from the bot into messages understood by the channel and sends them to the channel.
  • Bot 어댑터.Bot Adapter. 기본 Bot Framework 어댑터입니다.This is the default Bot Framework adapter. 다음 작업을 수행 합니다.It performs these tasks:
    • JSON 페이로드를 개체로 변환 합니다.Converts the JSON payload into an object. 이 시점에서 봇 커넥터 서비스 덕분에 이미 활동 개체입니다.At this point, it is already an activity object, thanks to the Bot Connector Service.
    • 턴 컨텍스트를 만들고 여기에 활동 개체를 추가 합니다.Creates a turn context and adds the activity object to it.
    • 미들웨어를 실행 합니다 (있는 경우).Runs middleware, if any.
    • 턴 컨텍스트를 봇으로 전달 합니다.Forwards the turn context to the bot.

참고

사용자 지정 채널 어댑터를 사용 하는 경우 어댑터 자체는 봇 커넥터 서비스 및 기본 봇 어댑터에서 수행 하는 작업을 수행 합니다.When a custom channel adapter is used, the adapter itself performs the tasks that the Bot Connector Service and the default Bot Adapter do. 또한 관련 웹 후크 API에 대 한 인증 메커니즘을 제공 합니다.Also, it provides the authentication mechanism for the related web hook API. 예를 들어, 여유 어댑터를 사용 하 여 봇에 봇 연결을 참조 하세요.For an example, see Connect a bot to Slack using the Slack adapter.

봇 인증Bot authentication

Bot은 MicrosoftAppIDMicrosoftAppPassword 으로 식별 되며,이는 bot의 설정 파일 ( appsettings.json .net), .env (JavaScript), config.py (Python)) 또는 Azure Key Vault 에서 유지 됩니다.A bot is identified by its MicrosoftAppID and MicrosoftAppPassword, which are kept within the bot's settings files (appsettings.json (.NET), .env (JavaScript), config.py (Python)) or in Azure Key Vault. 자세한 내용은 MicrosoftAppID 및 MicrosoftAppPassword를 참조 하세요.For more information, see MicrosoftAppID and MicrosoftAppPassword.

봇 채널 등록 을 통해 Azure Portal에 봇을 등록 하면 AZURE는 AD (Active Directory) 등록 응용 프로그램을 만듭니다.When you register a bot in the Azure portal, for example via the Bot Channels Registration, Azure creates an Active Directory (AD) registration application. Bot Framework CLI를 사용 하는 경우 특별히 특정 단계를 수행 하 여 AD 등록을 만들어야 합니다.If you use the Bot Framework CLI, you must specifically perform a step to create the AD registration. 이 등록에는 응용 프로그램 ID ( MicrosoftAppID ) 및 클라이언트 암호 ()가 있습니다 MicrosoftAppPassword .This registration has an application ID (MicrosoftAppID) and client secret (MicrosoftAppPassword). Azure는 이러한 값을 사용 하 여 봇이 보안 리소스에 액세스할 수 있는 토큰 을 생성 합니다.Azure uses these values to generate a token with which the bot can access secure resources.

채널은 봇 커넥터 서비스를 통해 봇에 요청을 보내면 요청의 권한 부여 헤더토큰 을 지정 합니다.When a channel sends a request to a bot, via the Bot Connector service, it specifies a token in the Authorization header of the request. Bot는 토큰의 신뢰성을 확인 하 여 봇 커넥터 서비스에서 호출을 인증 합니다.The bot authenticates calls from the Bot Connector service by verifying the authenticity of the token.

Bot에서 봇 커넥터 서비스 를 통해 채널에 요청을 보내는 경우 요청의 권한 부여 헤더토큰 을 지정 해야 합니다.When the bot sends a request to a channel via the Bot Connector service, it must specify the token in the Authorization header of the request. 모든 요청은 요청에 권한을 부여 하기 위해 봇 커넥터 서비스에서 확인 하는 액세스 토큰을 포함 해야 합니다.All requests must include the access token which is verified by the Bot Connector service to authorize the request.

설명 하는 작업은 봇 Framework SDK에서 자동으로 수행 됩니다.The operations described are automatically performed by the Bot Framework SDK.

자세한 내용은 봇 커넥터 서비스에서 봇으로 요청을 인증 하 고 봇 에서 봇 커넥터 서비스로 요청을 인증하는 방법에 대 한 REST API 설명서를 참조 하세요.For more details, see the REST API documentation on how to authenticate requests from the Bot Connector service to your bot and authenticate requests from your bot to the Bot Connector service.

채널Channels

일반적으로 채널은 봇 커넥터 서비스 를 통해 봇과 통신 합니다.Typically, channels communicate with a bot via the Bot Connector service. 이는 일반적으로 이전 인증 원칙이 적용 됨을 의미 합니다.This means that the previous authentication principles generally apply. 특정 채널의 특징을 확인할 수 있습니다.You may want to notice characteristics of specific channels.

직접 회선Direct Line

클라이언트 응용 프로그램은 지원 되는 표준 채널 외에도 직접 선 채널을 사용 하 여 봇과 통신할 수 있습니다.Besides the standard supported channels, a client application can communicate with a bot using the Direct Line channel.

클라이언트 응용 프로그램은 Azure Portal에서 직접 선 채널 구성 페이지에서 가져온 비밀 을 사용 하 여 (버전 3.0) 회선 (버전)에 대 한 요청을 인증 하거나 런타임에 가져온 토큰 을 사용 하 여 더 잘 합니다.The client application authenticates requests to Direct Line (version 3.0) either by using a secret obtained from the Direct Line channel configuration page in the Azure portal or, better, by using a token obtained at runtime. 암호 또는 토큰은 각 요청의 권한 부여 헤더에 지정 됩니다.The secret or token are specified in the Authorization header of each request.

중요

웹 채팅에서 Azure Bot Service 인증을 사용하는 경우 주의해야 하는 몇 가지 중요한 보안 고려 사항이 있습니다.When you use Azure Bot Service authentication with Web Chat there are some important security considerations you must keep in mind. 자세한 내용은 REST 인증 문서의 보안 고려 사항 섹션을 참조하세요.For more information, see the security considerations section in the REST authentication article.

자세한 내용은 비밀 유지를 숨기고 토큰에 대 한 암호 교환 및 embed 생성을 참조 하세요.For more information, see Keep your secret hidden, exchange your secret for a token, and generate the embed.

웹 채팅Web Chat

웹 채팅에는 채널과 컨트롤 이라는 두 가지 구현이 있습니다.The Web Chat has two implementations: the channel and the control.

  • Azure에 봇을 등록 하면 웹 채팅 채널이 자동으로 봇 테스트를 허용 하도록 구성 됩니다.When you register a bot with Azure, the Web Chat channel is automatically configured to allow testing of the bot.

    bot 웹 채팅 테스트..

    자세한 내용은 웹 채팅에 봇 연결을 참조 하세요.For more information, see Connect a bot to Web Chat.

  • 웹 채팅 컨트롤을 직접 선 채널과 함께 사용 하 여 클라이언트 응용 프로그램의 봇에 대 한 액세스를 제공할 수 있습니다.You can use a Web Chat control with the Direct Line channel to provide access to a bot in a client application. 컨트롤에 대 한 자세한 내용은 Bot Framework 웹 채팅을 참조 하세요.For more information about the control, see Bot Framework Web Chat.

기술Skills

기술과 기술 소비자는 각각 고유한 앱 ID 및 암호를 포함 하는 두 개의 고유한 봇입니다.A skill and a skill consumer are two distinct bots, each with their own app ID and password.

  • 소비자는 기술에 사용자 활동을 전달 하 고 사용자에 게 기술 응답을 전달할 수 있습니다.The consumer can forward user activities to a skill and forward the skill's responses to the user.
  • 기술 소비자는 기술 소비자에 게 채널 역할을 합니다.To the skill, the skill consumer acts as a channel. 소비자에 게는 기술이 활동을 보내는 서비스 URL의 역할을 하는 기술 호스트 끝점이 있습니다.The consumer has a skill host endpoint that acts as the service URL that the skill sends activities to.
  • 기술에 대 한 자세한 내용은 기술 개요를 참조 하세요.For more information about skills, see the skills overview.

서비스 수준 인증은 Bot Connector 서비스에서 관리됩니다.Service-level authentication is managed by the Bot Connector service. 이 프레임워크는 전달자 토큰과 봇 애플리케이션 ID를 사용하여 각 봇의 ID를 확인합니다.The framework uses bearer tokens and bot application IDs to verify the identity of each bot.

중요

이를 위해서는 모든 봇 (기술 소비자 및 사용 하는 기술)이 유효한 응용 프로그램 자격 증명을 가져야 합니다.This requires all bots (the skill consumer and any skills it consumes) to have valid application credentials.

클레임 유효성 검사Claims validation

이 기본 인증 수준 외에도, 기술 소비자의 인증 구성에 클레임 유효성 검사기 를 추가 해야 합니다.In addition to this basic level of authentication, you must add a claims validator to the authentication configuration of the skill and the skill consumer. 클레임은 인증 헤더 다음에 평가됩니다.The claims are evaluated after the authentication header. 이렇게 하면 각 봇에서 활동을 수락할 다른 인공 지능을 제한할 수 있습니다.This allows each bot to restrict which other bots it will accept activities from.

샘플 클레임 유효성 검사는 기술을 구현 하 고 기술 소비자를 구현하는 방법을 참조 하세요.For sample claims validation, see how to implement a skill and implement a skill consumer.

Bot Framework EmulatorBot Framework Emulator

Bot Framework 에뮬레이터에는 자체 인증 흐름과 자체 토큰이 있습니다.The Bot Framework Emulator has its own authentication flow and its own tokens. 에뮬레이터에는 자체 채널과 기본 제공 서버가 있습니다.The Emulator has its own channel and a built-in server.

사용자 인증User authentication

경우에 따라 봇은 사용자를 대신 하 여 보안 된 온라인 리소스에 액세스 해야 합니다.At times a bot must access secured online resources on behalf of the user. 이를 위해서는 봇에 권한이 있어야 합니다.To do that the bot must be authorized. 이는 전자 메일 확인, 비행 상태 확인 또는 주문 배치와 같은 특정 작업을 수행 하기 위해 봇은 Microsoft Graph, GitHub 또는 회사의 REST 서비스와 같은 외부 서비스를 호출 해야 하기 때문입니다.This is because to perform certain operations such as checking email, checking on flight status, or placing an order, the bot needs to call an external service such as Microsoft Graph, GitHub, or a company's REST service. OAuth는 사용자를 인증 하 고 봇에 권한을 부여 하는 데 사용 됩니다.OAuth is used to authenticate the user and authorize the bot.

참고

사용자의 리소스에 액세스 하는 봇에는 두 가지 매크로 단계가 포함 됩니다.Two macro-steps are involved for a bot to access a user's resources.

  1. 인증.Authentication. 사용자의 id를 확인 하는 프로세스입니다.The process of verifying the user's identity.
  2. 권한 부여.Authorization. 봇이 사용자의 리소스에 액세스할 수 있는지 확인 하는 프로세스입니다.The process of verifying that the bot can access the user's resources.

첫 번째 단계가 성공 하면 사용자의 자격 증명을 기반으로 하는 토큰이 발급 됩니다.If the first step is successful then a token based on the user's credentials is issued. 두 번째 단계에서 봇은 토큰을 사용 하 여 사용자의 리소스에 액세스 합니다.In the second step, the bot uses the token to access the user's resources.

자세한 내용은 사용자 인증을 참조 하세요.For more information, see User authentication.

ID 공급자Identity providers

ID 공급자는 사용자 또는 클라이언트 ID를 인증하고 소모성 보안 토큰을 발급합니다.An identity provider authenticates user or client identities and issues consumable security tokens. 사용자 인증을 서비스로 제공합니다.It provides user authentication as a service. 웹 애플리케이션과 같은 클라이언트 애플리케이션은 신뢰할 수 있는 ID 공급자에게 인증을 위임합니다.Client applications, such as web applications, delegate authentication to a trusted identity provider.

Bot은 다음에 대해 신뢰할 수 있는 id 공급자를 사용할 수 있습니다.A bot can use a trusted identity provider to:

  • SSO (Single Sign-On) 기능을 사용 하 여 여러 보안 리소스에 액세스할 수 있도록 합니다.Enable single sign-on (SSO) features, allowing it to access multiple secured resources.
  • 사용자를 대신 하 여 클라우드 컴퓨팅 리소스에 연결 하 여 사용자가 다시 인증 해야 하는 필요성을 줄입니다.Connect to cloud computing resources on behalf of a user, decreasing the need for users to re-authenticate.

참고

Bot 인증 중에 발급 된 토큰이 사용자 인증 중 발급 된 토큰과 동일 하지 않습니다.The token issued during Bot authentication is not the same token issued during User authentication. 첫 번째는 봇, 채널 및 궁극적으로 클라이언트 응용 프로그램 간에 보안 통신을 설정 하는 데 사용 됩니다.The first is used to establish secure communication between a bot, channels and, ultimately, client applications. 두 번째는 사용자를 대신 하 여 보안 리소스에 액세스할 수 있도록 봇에 권한을 부여 하는 데 사용 됩니다.The second is used to authorize the bot to access secured resource on behalf of the user.

채널은 사용자가 채널에 로그인 할 수 있도록 별도의 별도의 사용자 인증을 제공 합니다.Notice that channels provide their own, separate user authentication to let a user sign in to the channel.

Bot에서 id 공급자를 사용 하 여 사용자 대신 리소스에 액세스 하는 방법에 대 한 자세한 내용은 id 공급자 를 참조 하세요.See Identity providers for more about how bots can use identity providers to access resources on behalf of a user.