다음을 통해 공유


웹 채팅 있는 Single Sign

적용 대상: SDK v4

SSO(Single Sign-On)를 사용하면 웹 채팅 컨트롤과 같은 클라이언트가 사용자를 대신하여 봇과 통신할 수 있습니다. 현재 Microsoft Entra ID ID 공급자만 지원됩니다.

일반적으로 웹 채팅 웹 사이트 페이지에 포함됩니다. 사용자가 웹 사이트에 로그인하면 웹 채팅 사용자를 대신하여 봇을 호출합니다. 사용자의 자격 증명에 따라 웹 사이트 클라이언트의 토큰이 봇에 액세스하기 위해 다른 토큰으로 교환됩니다. 이러한 방식으로 사용자는 두 번 로그인할 필요가 없습니다. 웹 사이트에서 처음으로, 봇에서 두 번째로 SSO라는 용어를 사용합니다.

다음 다이어그램에서는 웹 채팅 클라이언트를 사용할 때의 SSO 흐름을 보여 줍니다.

웹 채팅 로그온 흐름에 대한 시퀀스 다이어그램입니다.

실패 시 SSO는 OAuth 카드를 표시하는 기존 동작으로 돌아갑니다. 사용자 동의가 필요하거나 토큰 교환이 실패할 때 오류가 발생할 수 있습니다.

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

  1. 사용자가 웹 사이트에 로그인합니다.

  2. OAuth 트리거 작업은 웹 채팅 수신됩니다.

  3. 웹 채팅 OAuth 트리거 활동을 통해 봇과 대화를 시작합니다.

  4. 봇은 OAuth 카드를 웹 채팅 다시 보냅니다.

  5. 웹 채팅 사용자에게 표시하기 전에 OAuth 카드를 가로채 속성이 포함되어 있는지 확인합니다TokenExchangeResource.

  6. 속성이 있는 경우 웹 채팅 사용자에 대한 교환 가능한 토큰을 가져와야 합니다. 이 토큰은 Microsoft Entra ID 토큰이어야 합니다.

  7. 웹 채팅 아래에 표시된 본문과 함께 Invoke 활동을 봇에 보냅니다.

    {
        "type": "Invoke",
        "name": "signin/tokenExchange",
        "value": {
            "id": "<any unique ID>",
            "connectionName": "<connection name on the bot (from the OAuth Card)>",
            "token": "<exchangeable token>"
        }
    }
    
  8. 봇은 Azure AI Bot Service에 요청을 실행하여 교환 가능한 토큰을 획득하여 처리 TokenExchangeInvokeRequest 합니다.

  9. Azure AI Bot Service는 토큰을 봇에 보냅니다.

  10. 봇은 웹 채팅 다시 반환 TokenExchangeInvokeResponse 합니다. 웹 채팅 수신TokenExchangeInvokeResponse될 때까지 기다립니다.

    {
        "status": "<response code>",
        "body": {
            "id":"<unique ID>",
            "connectionName": "<connection Name on the bot (from the OAuth Card)>",
            "failureDetail": "<failure reason if status code isn't 200, null otherwise>"
        }
    }
    
  11. TokenExchangeInvokeResponse 있는 status 200경우 웹 채팅 OAuth 카드를 표시하지 않습니다. 다른 status 경우 또는 수신되지 않은 경우 TokenExchangeInvokeResponse 웹 채팅 사용자에게 OAuth 카드를 표시합니다. 이렇게 하면 사용자 동의와 같은 오류 또는 충족되지 않은 종속성의 경우 SSO 흐름이 일반 OAuthCard 흐름으로 되돌아갈 수 있습니다.

구현 예제는 이 SSO 샘플을 참조하세요.