OCPP 2.0.1 Authorize 메시지

 

Authorize 개요

Authorize는 사용자가 충전을 시작하기 전에 인증 수단(RFID 카드, 앱 등)을 사용할 때 충전소가 중앙 시스템(CSMS)에 인증 요청을 보내는 메시지입니다. 이 메시지를 통해 사용자의 충전 권한을 확인하고 승인 또는 거부 결정을 받습니다.

메시지 구조

Request (충전소 → CSMS)

{
  "idToken": {
    "idToken": "04123456789ABC",
    "type": "ISO14443"
  },
  "certificate": "MIICertificateData...",
  "iso15118CertificateHashData": [
    {
      "hashAlgorithm": "SHA256",
      "issuerNameHash": "A1B2C3D4...",
      "issuerKeyHash": "E5F6G7H8...",
      "serialNumber": "12345678"
    }
  ]
}

Response (CSMS → 충전소)

{
  "idTokenInfo": {
    "status": "Accepted",
    "cacheExpiryDateTime": "2024-08-16T23:59:59.000Z",
    "chargingPriority": 0,
    "language1": "en",
    "language2": "ko",
    "groupIdToken": {
      "idToken": "GROUP001",
      "type": "ISO14443"
    },
    "personalMessage": {
      "format": "UTF8",
      "language": "en",
      "content": "Welcome! Your account balance: $25.50"
    }
  },
  "certificateStatus": "Accepted"
}

주요 필드 설명

Request 필드들

필드명 필수여부 타입 설명
idToken 필수 Object 인증 토큰 정보
idToken.idToken 필수 String 실제 토큰 값 (RFID UID, 앱 토큰 등)
idToken.type 필수 Enum 토큰 타입
certificate 선택사항 String X.509 인증서 (PEM 형식)
iso15118CertificateHashData 선택사항 Array ISO 15118 인증서 해시 데이터

idToken.type 값

타입 설명
Central 중앙 시스템에서 생성된 토큰
eMAID ISO 15118 eMAID (전자 이동성 계정 ID)
ISO14443 ISO 14443 RFID 카드
ISO15693 ISO 15693 RFID 카드
KeyCode 키패드 입력 코드
Local 로컬에서 생성된 토큰
MacAddress MAC 주소 기반 토큰
NoAuthorization 인증 없음 (무료 충전 등)

Response 필드들

필드명 필수여부 타입 설명
idTokenInfo 필수 Object 토큰 인증 결과 정보
idTokenInfo.status 필수 Enum 인증 상태
idTokenInfo.cacheExpiryDateTime 선택사항 DateTime 캐시 만료 시간
idTokenInfo.chargingPriority 선택사항 Integer 충전 우선순위 (-9 ~ 9)
idTokenInfo.language1 선택사항 String 기본 언어 코드
idTokenInfo.language2 선택사항 String 보조 언어 코드
idTokenInfo.groupIdToken 선택사항 Object 그룹 토큰 정보
idTokenInfo.personalMessage 선택사항 Object 개인화 메시지
certificateStatus 선택사항 Enum 인증서 상태

idTokenInfo.status 값

상태 설명
Accepted 승인됨 - 충전 시작 가능
Blocked 차단됨 - 계정이 차단된 상태
ConcurrentTx 동시 거래 - 이미 다른 충전소에서 사용 중
Expired 만료됨 - 토큰 또는 계정이 만료
Invalid 유효하지 않음 - 토큰 형식 오류
NoCredit 잔액 부족 - 충전을 위한 잔액 부족
NotAllowedTypeEVSE EVSE 타입 불허 - 해당 충전기 타입 사용 불가
NotAtThisLocation 위치 불허 - 해당 위치에서 사용 불가
NotAtThisTime 시간 불허 - 현재 시간에 사용 불가
Unknown 알 수 없음 - 토큰을 찾을 수 없음

실제 사용 예제

예제 1: RFID 카드 인증 성공

// Request
{
  "idToken": {
    "idToken": "04123456789ABC",
    "type": "ISO14443"
  }
}

// Response
{
  "idTokenInfo": {
    "status": "Accepted",
    "cacheExpiryDateTime": "2024-08-16T23:59:59.000Z",
    "chargingPriority": 0,
    "language1": "en",
    "personalMessage": {
      "format": "UTF8",
      "language": "en",
      "content": "Welcome John! Ready to charge."
    }
  }
}

예제 2: 앱 토큰 인증 (잔액 부족)

// Request
{
  "idToken": {
    "idToken": "APP_TOKEN_ABC123",
    "type": "Central"
  }
}

// Response
{
  "idTokenInfo": {
    "status": "NoCredit",
    "personalMessage": {
      "format": "UTF8", 
      "language": "en",
      "content": "Insufficient balance. Please add credit to your account."
    }
  }
}

예제 3: 차단된 계정

// Request
{
  "idToken": {
    "idToken": "04987654321DEF",
    "type": "ISO14443"
  }
}

// Response
{
  "idTokenInfo": {
    "status": "Blocked",
    "personalMessage": {
      "format": "UTF8",
      "language": "en", 
      "content": "Account blocked. Please contact customer service."
    }
  }
}

예제 4: ISO 15118 Plug & Charge

// Request
{
  "idToken": {
    "idToken": "DE*ABC*E123456789",
    "type": "eMAID"
  },
  "certificate": "-----BEGIN CERTIFICATE-----\nMIICertificateData...\n-----END CERTIFICATE-----",
  "iso15118CertificateHashData": [
    {
      "hashAlgorithm": "SHA256",
      "issuerNameHash": "A1B2C3D4E5F6G7H8",
      "issuerKeyHash": "I9J0K1L2M3N4O5P6",
      "serialNumber": "987654321"
    }
  ]
}

// Response
{
  "idTokenInfo": {
    "status": "Accepted",
    "chargingPriority": 5
  },
  "certificateStatus": "Accepted"
}

예제 5: 키패드 코드 인증

// Request
{
  "idToken": {
    "idToken": "1234",
    "type": "KeyCode"
  }
}

// Response
{
  "idTokenInfo": {
    "status": "Accepted",
    "cacheExpiryDateTime": "2024-08-16T18:00:00.000Z",
    "personalMessage": {
      "format": "UTF8",
      "language": "ko",
      "content": "인증 성공! 충전을 시작하세요."
    }
  }
}

인증 처리 흐름

일반적인 인증 과정

  1. 사용자 액션: RFID 카드 태그, 앱에서 QR 코드 스캔 등
  2. 토큰 읽기: 충전소가 인증 수단에서 토큰 정보 추출
  3. Authorize 요청: CSMS에 인증 요청 전송
  4. CSMS 검증: 토큰 유효성, 계정 상태, 잔액 등 확인
  5. 응답 처리: 승인/거부 결과에 따른 후속 처리
  6. 사용자 안내: 디스플레이나 LED를 통한 결과 표시

캐싱 메커니즘

// 첫 번째 인증 (온라인)
{
  "idTokenInfo": {
    "status": "Accepted",
    "cacheExpiryDateTime": "2024-08-17T10:30:00.000Z"
  }
}

// 네트워크 단절 시 캐시된 정보로 오프라인 인증 가능

그룹 토큰 활용

// 기업 차량 그룹 관리
{
  "idTokenInfo": {
    "status": "Accepted",
    "groupIdToken": {
      "idToken": "COMPANY_FLEET_A",
      "type": "Central"
    },
    "chargingPriority": 3
  }
}

특수 상황 처리

동시 충전 제한

// 이미 다른 충전소에서 충전 중
{
  "idTokenInfo": {
    "status": "ConcurrentTx",
    "personalMessage": {
      "format": "UTF8",
      "language": "en",
      "content": "Already charging at Station B. Stop current session first."
    }
  }
}

시간 제한

// 야간 시간대 사용 제한
{
  "idTokenInfo": {
    "status": "NotAtThisTime",
    "personalMessage": {
      "format": "UTF8",
      "language": "en", 
      "content": "Charging not allowed between 11 PM - 6 AM."
    }
  }
}

위치 제한

// 특정 충전소만 사용 가능한 토큰
{
  "idTokenInfo": {
    "status": "NotAtThisLocation",
    "personalMessage": {
      "format": "UTF8",
      "language": "en",
      "content": "This card is valid only at downtown stations."
    }
  }
}

관련 Configuration Key

주요 설정값

설정 키 기본값 설명
AuthorizeRemoteTxRequests true 원격 트랜잭션 요청 시 인증 필요 여부
LocalAuthorizeOffline true 오프라인 시 로컬 인증 허용 여부
LocalPreAuthorize false 사전 인증 캐싱 사용 여부
AuthorizationCacheEnabled true 인증 캐시 사용 여부

보안 고려사항

토큰 보안

  • 토큰 값 암호화 전송
  • 재전송 공격 방지
  • 토큰 복제 방지 메커니즘

인증서 검증

  • X.509 인증서 체인 검증
  • 인증서 만료일 확인
  • CRL(Certificate Revocation List) 확인

개인정보 보호

  • 개인화 메시지 암호화
  • 사용자 식별 정보 최소화
  • GDPR 준수

중요 포인트

  • 사전 인증: StartTransaction 이전에 수행하여 빠른 충전 시작
  • 오프라인 지원: 캐시 메커니즘으로 네트워크 단절 시에도 인증 가능
  • 개인화: 사용자별 맞춤 메시지와 언어 설정 지원
  • 우선순위: 충전 우선순위로 대기열 관리 가능
  • 다양한 인증 방식: RFID, 앱, 키패드, Plug & Charge 등 지원
  • 실시간 상태: 계정 차단, 잔액 부족 등 실시간 상태 반영

Authorize 메시지는 충전 서비스의 보안과 사용자 경험을 동시에 보장하는 핵심 메시지입니다. 다양한 인증 방식과 상황별 처리를 통해 안전하고 편리한 충전 환경을 제공합니다.