다음을 통해 공유


Single Sign-On 정보

적용 대상: SDK v4

SSO(Single Sign-On)를 사용하면 리소스에 대한 액세스를 독립적인 애플리케이션 간에 공유할 수 있습니다. 예를 들어 사용자는 루트 봇의 서비스에 로그인할 수 있고 루트 봇은 기술 봇과 액세스 토큰을 공유할 수 있습니다. 현재 Microsoft Entra ID ID 공급자만 지원됩니다.

SSO는 다음 시나리오에 적용됩니다.

  • 루트 봇 및 하나 이상의 기술 봇. 사용자가 루트 봇에서 로그인합니다. 그런 다음, 봇은 사용자를 대신하여 여러 기술을 호출합니다.
  • 웹 사이트에 포함된 웹 채팅 컨트롤입니다. 사용자가 웹 사이트에서 로그인합니다. 그런 다음 웹 사이트는 사용자를 대신하여 봇 또는 기술을 호출합니다.

SSO는 다음과 같은 이점을 제공합니다.

  • 사용자가 여러 번 로그인할 필요가 없습니다.
  • 루트 봇 또는 웹 사이트는 사용자의 권한을 알 필요가 없습니다.

참고 항목

SSO는 Bot Framework SDK 버전 4.8 이상에서 사용할 수 있습니다.

SSO 구성 요소 상호 작용

다음 시간 순서 다이어그램은 SSO 다양한 구성 요소 간의 상호 작용을 보여 줍니다.

  • 다음 다이어그램에서는 루트 봇의 흐름을 보여 줍니다.

    루트 봇에 대한 SSO 시퀀스 다이어그램

  • 다음 다이어그램에서는 웹 채팅 컨트롤의 흐름 및 대체 흐름을 보여 줍니다.

    웹 채팅 컨트롤에 대한 SSO 시퀀스 다이어그램입니다.

    토큰 교환이 실패하면 사용자에게 로그인하라는 메시지가 대체됩니다. 이러한 오류는 추가 권한이 필요하거나 토큰이 잘못된 서비스에 대한 경우 발생할 수 있습니다.

흐름을 분석해 보겠습니다.

  1. 클라이언트는 OAuth 시나리오를 트리거하는 봇과 대화를 시작합니다.

  2. 봇은 OAuth 카드를 클라이언트로 다시 보냅니다.

  3. 클라이언트는 OAuth 카드를 사용자에게 표시하기 전에 가로채고 속성이 포함되어 있는지 확인합니다 TokenExchangeResource .

  4. 속성이 있는 경우 클라이언트는 봇에 보냅니 TokenExchangeInvokeRequest 다. 클라이언트에는 사용자에 대한 교환 가능한 토큰이 있어야 합니다. 이 토큰은 Microsoft Entra ID 토큰이어야 하며 대상 그룹은 속성과 동일 TokenExchangeResource.Uri 해야 합니다. 클라이언트는 아래 본문과 함께 Invoke 작업을 봇에 보냅니다.

    {
        "type": "Invoke",
        "name": "signin/tokenExchange",
        "value": {
            "id": "<any unique ID>",
            "connectionName": "<connection Name on the skill bot (from the OAuth Card)>",
            "token": "<exchangeable token>"
        }
    }
    
  5. 봇은 이를 TokenExchangeInvokeRequest 처리하고 클라이언트에 TokenExchangeInvokeResponse 다시 반환합니다. 클라이언트는 을 받을 때까지 기다려야 합니다 TokenExchangeInvokeResponse.

    {
        "status": "<response code>",
        "body": {
            "id":"<unique ID>",
            "connectionName": "<connection Name on the skill bot (from the OAuth Card)>",
            "failureDetail": "<failure reason if status code isn't 200, null otherwise>"
        }
    }
    
  6. 해당 TokenExchangeInvokeResponse 카드가 있는 status 200경우 클라이언트는 OAuth 카드를 표시하지 않습니다. 일반 흐름 다이어그램을 참조하세요. 다른 status 카드나 수신되지 않은 경우 TokenExchangeInvokeResponse 클라이언트는 사용자에게 OAuth 카드를 표시합니다. 대체 흐름 다이어그램을 참조하세요. 이렇게 하면 사용자 동의와 같은 오류 또는 충족되지 않은 종속성이 있는 경우 SSO 흐름이 일반 OAuthCard 흐름으로 되돌아갈 수 있습니다.

다음 단계