사용자 인증

적용 대상: SDK v4

때때로 봇은 사용자를 대신하여 전자 메일 검사, 플라이트 상태 검사 또는 주문과 같은 보안 온라인 리소스에 액세스해야 합니다. 사용자는 사용자를 대신하여 봇에 권한을 부여해야 하며, 봇에 권한을 부여하려면 사용자가 자신의 ID를 인증해야 합니다. OAuth 는 사용자를 인증하고 봇에 권한을 부여하는 데 사용됩니다. 인증 유형도 참조하세요.

OAuth 지식을 새로 고치려면 다음을 참조하세요.

대화의 사용자 인증

전자 메일 검사, 일정 참조, 플라이트 상태 검사, 주문 등 사용자를 대신하여 특정 작업을 수행하려면 봇이 Microsoft Graph, GitHub 또는 회사의 REST 서비스와 같은 외부 서비스를 호출해야 합니다. 각 외부 서비스에는 이러한 호출을 보호하는 방법이 있습니다. 이러한 요청을 발급하는 일반적인 방법은 해당 외부 서비스(JWT(JSON 웹 토큰)라고도 함)에서 사용자를 고유하게 식별하는 사용자 토큰을 사용하는 것입니다.

외부 서비스에 대한 호출을 보호하려면 봇이 해당 서비스에 대한 사용자의 토큰을 획득할 수 있도록 사용자에게 로그인을 요청해야 합니다. 많은 서비스는 OAuth 또는 OAuth2 프로토콜을 통해 토큰 검색을 지원합니다.

Azure AI Bot Service는 OAuth 프로토콜을 사용하고 토큰 수명 주기를 관리하는 특수 로그인 카드 및 서비스를 제공합니다. 봇은 이러한 기능을 사용하여 사용자 토큰을 획득할 수 있습니다.

  • 봇 구성의 일부로 OAuth 연결 은 Azure의 Azure AI Bot Service 리소스 내에 등록됩니다.

    연결에는 유효한 OAuth 클라이언트 ID 및 비밀, 사용하도록 설정할 OAuth 범위 및 해당 ID 공급자에 필요한 기타 연결 메타데이터와 함께 사용할 ID 공급자에 대한 정보가 포함되어 있습니다.

  • 봇의 코드에서 OAuth 연결은 사용자를 로그인하고 사용자 토큰을 가져오는 데 사용됩니다.

다음 이미지는 인증 프로세스와 관련된 요소를 보여줍니다.

Diagram illustrating the relationship between authentication components in Azure AI Bot Service.

Bot Framework 토큰 서비스 정보

Bot Framework 토큰 서비스는 다음을 담당합니다.

  • 다양한 외부 서비스와 함께 OAuth 프로토콜의 사용을 용이하게 합니다.
  • 특정 봇, 채널, 대화 및 사용자에 대한 토큰을 안전하게 저장할 수 있도록 합니다.
  • 사용자 토큰 획득

    봇에 만료된 사용자 토큰이 있는 경우 봇은 다음을 수행해야 합니다.

    • 사용자 로그아웃
    • 로그인 흐름을 다시 시작합니다.

예를 들어 Microsoft Graph API를 사용하여 사용자의 최근 전자 메일을 검사 수 있는 봇에는 ID 공급자의 사용자 토큰(이 경우 Microsoft Entra ID)이 필요합니다. 디자인 타임에 봇 개발자는 다음 두 가지 중요한 단계를 수행합니다.

  1. Azure Portal을 통해 Bot Framework 토큰 서비스에 Microsoft Entra ID 애플리케이션인 ID 공급자를 등록합니다.
  2. 봇에 대한 OAuth 연결(예 GraphConnection: 이름 지정)을 구성합니다.

다음 그림은 Microsoft Graph 서비스를 사용하여 전자 메일 요청을 할 때 사용자가 봇과 상호 작용하는 시간 순서를 보여줍니다.

Sequence diagram outlining the steps for a bot to send an email on behalf of a user.

  1. 사용자가 봇에 전자 메일 요청을 합니다.

  2. 이 메시지가 포함된 활동은 사용자로부터 Bot Framework 채널 서비스로 전송됩니다. 채널 서비스는 작업 내 userid 필드가 설정되고 메시지가 봇에 전송되도록 합니다.

    참고 항목

    사용자 ID는 채널별(예: 사용자의 Facebook ID 또는 SMS 전화 번호)입니다.

  3. 봇은 OAuth 연결 GraphConnection에 대한 UserId에 대한 토큰이 이미 있는지 묻는 Bot Framework 토큰 서비스를 요청합니다.

  4. 이 사용자가 봇과 상호 작용한 것은 이번이 처음이므로 Bot Framework 토큰 서비스에는 아직 이 사용자에 대한 토큰이 없으며 NotFound 결과를 봇에 반환합니다.

    참고 항목

    토큰이 발견되면 인증 단계를 건너뛰고 봇은 저장된 토큰을 사용하여 이메일 요청을 할 수 있습니다.

  5. 봇은 연결 이름을 GraphConnection 사용하여 OAuthCard를 만들고 이 카드 사용하여 로그인하도록 요청하는 사용자에게 회신합니다.

  6. 작업이 봇 프레임워크 토큰 서비스를 통해 전달되고 봇 프레임워크 토큰 서비스를 호출하여 이 요청에 대해 유효한 OAuth 로그인 URL을 만듭니다. 이 로그인 URL은 OAuthCard에 추가되고 카드 사용자에게 반환됩니다.

  7. 사용자에게 OAuthCard의 로그인 단추를 클릭하여 로그인할 메시지가 표시됩니다.

  8. 사용자가 로그인 단추를 클릭하면 채널 서비스가 웹 브라우저를 열고 외부 서비스를 호출하여 로그인 페이지를 로드합니다.

  9. 사용자가 외부 서비스에 대해 이 페이지에 로그인합니다. 그런 다음, 외부 서비스에서 봇 프레임워크 토큰 서비스와의 OAuth 프로토콜 교환을 완료하여 사용자 토큰을 봇 프레임워크 토큰 서비스에 보냅니다. Bot Framework 토큰 서비스는 이 토큰을 안전하게 저장하고 이 토큰을 사용하여 활동을 봇에 보냅니다.

  10. 봇은 토큰을 사용하여 활동을 수신하고 이를 사용하여 MS Graph API를 호출할 수 있습니다.

로그인 URL 보안 설정

Bot Framework에서 사용자 로그인을 용이하게 하는 경우 중요한 고려 사항은 로그인 URL을 보호하는 방법입니다. 사용자에게 로그인 URL이 표시되면 이 URL은 해당 봇의 특정 대화 ID 및 사용자 ID와 연결됩니다. 이 URL을 공유하지 마세요. 이로 인해 특정 봇 대화에 잘못된 로그인이 발생합니다. 공유 로그인 URL을 사용하는 보안 공격을 완화하려면 로그인 URL을 클릭하는 컴퓨터와 사용자가 대화 창을 소유한 사람인지 확인합니다.

Microsoft Teams, Direct Line 및 WebChat과 같은 일부 채널은 사용자가 눈치채지 않고 이 작업을 수행할 수 있습니다. 예를 들어 WebChat은 세션 쿠키를 사용하여 로그인 흐름이 WebChat 대화와 동일한 브라우저에서 발생하도록 합니다. 그러나 다른 채널의 경우 사용자에게 6자리 매직 코드가 표시되는 경우가 많습니다. 이는 사용자가 최종 인증을 완료하지 않는 한 Bot Framework 토큰 서비스가 봇에 토큰을 릴리스하지 않으므로 기본 제공 다단계 인증과 유사하며, 로그인한 사용자가 6자리 코드를 입력하여 채팅 환경에 액세스할 수 있음을 증명합니다.

Important

중요한 보안 고려 사항을 염두에 두십시오. 이 블로그 게시물 에서 Azure AI Bot Service 인증과 함께 WebChat을 사용하는 추가 정보를 찾을 수 있습니다.

다음 단계

이제 사용자 인증에 대해 알고 있으므로 봇에 적용하는 방법을 살펴보겠습니다.

참고 항목