사용자사용자 토큰토큰 할당

토큰 할당

개요

사용자가 직접 토큰을 생성하고 검증하며, 이를 IMKIT 채팅 서버에 할당하여 사용합니다. IMKIT은 메시지 처리만 담당하게 되며, 이 모드는 이미 기존 인증 시스템이 있고 토큰 수명 주기를 완전히 제어하려는 애플리케이션에 적합합니다.

구현 프로세스:

  1. 귀하의 시스템에서 사용자 정의 토큰 생성
  2. /admin/clients API를 사용하여 클라이언트를 생성하고, 귀하가 제공하는 토큰과 expirationDate를 전달합니다.
  3. 이후 「토큰 업데이트」 API를 통해 업데이트하거나 「토큰 철회」 API를 통해 철회할 수 있습니다.
  4. 귀하의 시스템이 토큰 검증 로직을 담당합니다.

API 엔드포인트

사용자 생성 및 외부 토큰 할당

새 사용자를 생성하고 귀하의 시스템에서 생성된 액세스 토큰을 할당합니다.

POST /admin/clients

Headers

매개변수타입필수설명
IM-API-KEYstring귀하의 API 키
Content-Typestringapplication/json

Request Body

매개변수타입필수설명
_idstring사용자 고유 식별자
nicknamestring사용자 표시 이름
avatarUrlstring사용자 아바타 URL
issueAccessTokenboolean이 권한 부여 모드를 활성화하려면 false로 설정하십시오.
tokenstring귀하의 시스템에서 생성된 사용자 정의 토큰
expirationDatestring토큰 만료 시간 (ISO 8601 형식)

요청 예시

JavaScript 예시:

const response = await axios.post(
  "https://your-app.imkit.io/admin/clients",
  {
    _id: "user002",
    nickname: "John",
    avatarUrl: "https://example.com/avatar.jpg",
    issueAccessToken: false,
    token: "my-custom-token-xyz",
    expirationDate: "2025-06-30T12:00:00Z",
  },
  {
    headers: {
      "IM-API-KEY": process.env.IM_API_KEY,
      "Content-Type": "application/json",
    },
  }
);

cURL 예시:

curl -X "POST" "https://your-app.imkit.io/admin/clients" \
     -H 'IM-API-KEY: {IM-API-KEY}' \
     -H 'Content-Type: application/json' \
     -d $'{
  "_id": "user002",
  "nickname": "John",
  "avatarUrl": "https://example.com/avatar.jpg",
  "issueAccessToken": false,
  "token": "my-custom-token-xyz",
  "expirationDate": "2025-06-30T12:00:00Z"
}'

Response

성공 응답 (200 OK)

매개변수타입설명
_idstring사용자 고유 식별자
nicknamestring사용자 표시 이름
avatarUrlstring사용자 아바타 URL
issueAccessTokenboolean토큰 발급 모드 (false는 외부 토큰 사용을 의미함)
tokenstring귀하가 제공한 사용자 정의 토큰
expirationDatestring토큰 만료 시간 (ISO 8601 형식)

응답 예시

{
  "_id": "user002",
  "nickname": "John",
  "avatarUrl": "https://example.com/avatar.jpg",
  "issueAccessToken": false,
  "token": "my-custom-token-xyz",
  "expirationDate": "2025-06-30T12:00:00Z"
}

오류 응답

400 Bad Request — 요청 매개변수 오류

{
  "error": "INVALID_REQUEST",
  "message": "Missing required field: token"
}

401 Unauthorized — API 키 유효하지 않음

{
  "error": "UNAUTHORIZED",
  "message": "Invalid API key"
}

409 Conflict — 사용자가 이미 존재함

{
  "error": "USER_EXISTS",
  "message": "User with _id 'user002' already exists"
}

사용 시나리오

외부 신원 통합

  • SSO 통합: 외부 인증 시스템의 토큰을 IMKIT 사용자에 바인딩합니다.
  • 사용자 정의 만료 시간: 비즈니스 요구에 따라 토큰의 유효 기간을 설정합니다.

토큰 관리

  • 토큰 로테이션: 보안을 보장하기 위해 사용자의 액세스 토큰을 정기적으로 업데이트합니다.
  • 다중 시스템 동기화: 다른 시스템에서 발급된 토큰을 IMKIT으로 동기화합니다.

주의 사항

  • 토큰 검증 책임: 귀하의 시스템이 토큰의 유효성을 검증할 책임이 있습니다.
  • 만료 시간 관리: expirationDate가 귀하의 시스템 내 토큰 만료 시간과 일치하는지 확인하십시오.
  • 토큰 형식: IMKIT은 토큰 형식을 제한하지 않지만 JWT 또는 이와 유사한 표준 형식을 권장합니다.
  • 보안: 토큰이 충분한 엔트로피와 적절한 서명 메커니즘을 갖추도록 하십시오.
  • 업데이트 빈도: 서비스 중단을 피하기 위해 토큰이 만료되기 전에 능동적으로 업데이트하는 것이 좋습니다.
  • 통합 인증: 자동 업데이트 메커니즘을 구현하기 위해 IMKIT 토큰을 기존 인증 시스템과 통합하는 것이 좋습니다.
  • 토큰 사용: 토큰을 획득한 후 후속 API 호출 시 IM-Authorization 헤더를 통해 전달하십시오.
© 2026 FUNTEK Software Inc. All rights reserved.