로그인 / Zendesk 챗과 통합
 문서로 돌아가기

로그인

  • 통합 가이드

  • 인증 옵션

  • 사용자 데이터 저장소

  • 보안

  • 사용자 정의

  • 통신 서비스 공급업체

  • 특징

  • 방법

  • 연장

  • 법률 관련 설정

  • 참조

  • Zendesk 챗과 통합

    작동 방식

    Zendesk 챗과 통합하면 내 프로젝트에 엑솔라 로그인 제품 사용자를 내 지원팀에 질문을 제출한 Zendesk Chat 방문자와 연결할 수 있습니다. Zendesk 쪽에서 사용된 external_id매개 변수는 내 로그인 프로젝트의 사용자 ID와 일치합니다. 방문자를 엑솔라 로그인 사용자로 식별하게 되면 이들의 계정을 관리자 페이지을 통해 관리할 수 있게 됩니다.

    사용자

    이미 로그인을 통합하고 Zendesk 챗 계정을 보유한 파트너.

    획득 방법

    방문자 연결 방법:

    1. 로그인 프로젝트에서 다음 요청 중 하나를 통해 사용자를 인증합니다.
    2. Zendesk JWT를 생성.
    3. Zendesk 챗으로 사용자를 인증.

    Zendesk JWT 생성

    Zendesk JWT는 로그인 프로젝트에서 사용자 인증 시 엑솔라 로그인 서버로부터 수신한 토큰에 기반합니다. Zendesk JWT를 생성할 때 필요한 도메인의 쿠키 파일에 토큰을 저장하고 이를 HTTP 요청에 추가할 수 있습니다.

    또한 호출 구현 시 자체적인 응답 형식을 설정할 수 있습니다.

    아래는 Go에 기반한 Zendesk JWT 취득 절차의 단순화 버전입니다. Zendesk JWT 생성 전체 코드는 GitHub에서 찾을 수 있습니다.

    JWT 생성 전 다음 패키지를 설치합니다.

    Copy
    Full screen
    Small screen

    go get github.com/dgrijalva/jwt-go
    go get github.com/rs/cors

    Zendesk JWT 취득 방법:

    1. JWT 검증.
    2. JWT 해독.
    3. JWT 요청 목록 작성.
    4. JWT 서명.

    JWT 검증

    쿠키 파일에서 JWT를 추출하고 이를 관리자 페이지 > 로그인 프로젝트 > 일반 설정 > 비밀 키의 비밀 키로 검증합니다.

    Copy
    Full screen
    Small screen

    cookie, err := r.Cookie("token")
    
    token, err := jwt.Parse(cookie.Value, func(token *jwt.Token) (interface{}, error) {
      if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
        return nil, errors.New("unexpected signing method")
      }
      return []byte(loginSecret), nil
    })
    
    var loginClaims jwt.MapClaims
    var ok bool
    if loginClaims, ok = token.Claims.(jwt.MapClaims); !ok || !token.Valid {
      writeErrorResponse(w, "00-01", "Token is invalid", http.StatusUnauthorized)
      return
    }

    JWT 해독

    JWT를 해독하고 이로부터 다음 클레임의 값을 추출합니다.

    • email — 이메일 주소
    • sub — 사용자 ID

    Copy
    Full screen
    Small screen

    var sub, email string
    sub, _ = loginClaims["sub"].(string)
    email, _ = loginClaims["email"].(string)

    JWT 요청 목록 작성

    JWT 요청 목록을 작성합니다. 모든 요청에 대한 설명은 Creating a JWT token 모듈에서 찾을 수 있습니다.

    Copy
    Full screen
    Small screen

    zendeskClaims := jwt.MapClaims{}
    zendeskClaims["name"] = email
    zendeskClaims["email"] = email
    zendeskClaims["external_id"] = sub
    zendeskClaims["iat"] = time.Now().UTC().Unix()

    JWT 서명

    여러분의 Zendesk 챗 계정의 비밀 키로 토큰에 서명합니다. 이는 Chat dashboard > Settings > Widget > Widget security 탭 > Visitor Authentication에서 찾을 수 있습니다.

    Copy
    Full screen
    Small screen

    zendeskToken := jwt.NewWithClaims(jwt.SigningMethodHS256, zendeskClaims)
    zendeskTokenString, _ := zendeskToken.SignedString([]byte(zendeskSecret))

    Zendesk 챗으로 방문자 인증

    Zendesk 챗에 다음 방문자 데이터 추가 가능:

    • 이름
    • 이메일 주소
    • 식별자
    Zendesk JWT 생성 중에 방문자 데이터가 추가됩니다.

    수신된 Zendesk JWT로 Zendesk 챗 방문자 인증에 사용. 웹 SDK를 다음과 같이 authentication 옵션으로 초기화:

    Copy
    Full screen
    Small screen

    zChat.init({
      account_key: ACCOUNT_KEY,
      authentication: {
        jwt_fn: function(callback) {
          fetch('https://example.com:8001/generate/token', {
            credentials: "include"
          }).then(function(res) {
            res.text().then(function(body) {
              const jwt = JSON.parse(body).token;
              callback(jwt)
            });
          });
        }
      }
    });
    

    방문자 인증 절차는 지침웹 SDK에 기술되어 있습니다.

    알림
    SNS는 사용자 이메일 주소에 대한 데이터를 전달하지 않을 수 있습니다. 이메일 주소를 요청하려면 지침을 따르세요.

    방문자 작업

    성공적인 인증 이후,방문자는 Zendesk 챗 계정 > Visitors 모듈에 표시됩니다.

    Visitors 엔드포인트로 작업하려면, 토큰 (지침)을 취득해야 합니다. 내 로그인 프로젝트에 연결된 방문자 데이터와 작업하는 경우:

    1. 방문자 데이터를 취득합니다.
    2. 내 로그인 프로젝트에 방문자가 연결됩니다.

    방문자 데이터 가져오기

    Show Visitor 요청을 실행하려면, Visitor ID를 가져와야 합니다. 이는 필요한 방문자를 선택하여 Zendesk 챗 계정에서 찾을 수 있습니다.

    예제 Show Visitor (요청):

    Copy
    Full screen
    Small screen
    http
    • http
    • curl

    GET https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv HTTP/1.1
    Authorization: Bearer <token>
    curl --request GET \
      --url https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv \
      --header 'authorization: bearer_token'

    응답 예제:

    Copy
    Full screen
    Small screen
    http
    • http
    • curl

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
      "banned": false,
      "notes": "",
      "id": "9855790.xjj3ukxyIhn6j3",
      "email": "email@email.com",
      "phone": "",
      "created": 1586950554,
      "name": "email@email.com",
      "external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
    }
    {
      "banned": false,
      "notes": "",
      "id": "9855790.xjj3ukxyIhn6j3",
      "email": "email@email.com",
      "phone": "",
      "created": 1586950554,
      "name": "email@email.com",
      "external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
    }

    방문자가 로그인 프로젝트에 연결된 경우, 수신된 데이터의 external_id 매개 변수는 사용자 ID와 일치하게 됩니다. 사용자 ID는 관리자 페이지 > 로그인 프로젝트 > 사용자 > 사용자 이름/ID에서 찾을 수 있습니다.

    이 기사가 도움이 되었나요?
    감사합니다!
    개선해야 할 점이 있을까요? 메시지
    유감입니다
    이 기사가 도움이 안 된 이유를 설명해 주세요. 메시지
    의견을 보내 주셔서 감사드립니다!
    메시지를 검토한 후 사용자 경험 향상에 사용하겠습니다.
    이 페이지 평가
    이 페이지 평가
    개선해야 할 점이 있을까요?

    답하기 원하지 않습니다

    의견을 보내 주셔서 감사드립니다!
    마지막 업데이트: 2022년 12월 30일

    오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.

    문제 보고
    콘텐츠를 항상 검토합니다. 여러분의 피드백은 콘텐츠를 개선에 도움이 됩니다.
    후속 조치를 위해 이메일을 제공해 주세요
    의견을 보내 주셔서 감사드립니다!