소개
이 문서에서는 Cisco 버그 IDCSCvi01660에 문서화된 알려진 문제인 APNS "400 bad request" 오류를 해결하는 방법을 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
Apple Push Notifications
설정.
Apple Push Notifications
제공합니다.
사용되는 구성 요소
이 문서는 특정 하드웨어 및 소프트웨어 버전으로 제한되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
클러스터에서 푸시 알림이 활성화되면 Cisco Unified Communications Manager 및 IM and Presence Service는 Apple 또는 Google 클라우드의 푸시 알림 서비스를 사용하여 iOS 또는 Android 디바이스에서 실행되는 호환 가능한 Cisco Jabber 또는 Webex 클라이언트에 푸시 알림을 보냅니다. 푸시 알림을 사용하면 시스템이 백그라운드 모드(일시 중단 모드라고도 함)에 들어간 후에도 클라이언트와 통신할 수 있습니다. 푸시 알림이 없으면 시스템은 백그라운드 모드로 전환된 클라이언트에 통화나 메시지를 보내지 못할 수 있습니다.
Cisco Cloud에서 인증하려면 Cisco Communications Manager Server에서 온보딩 프로세스의 일부로 토큰을 생성합니다. "400 bad request(400 잘못된 요청)" 메시지가 수신되면 푸시 알림 서비스에 대한 머신 액세스 토큰이 만료되고 설명서에 따라 액세스 토큰을 수동으로 업데이트해야 합니다.
https://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cucm/push_notifications/cucm_b_push-notifications-deployment-guide/cucm_b_push-notifications-deployment-guide_chapter_01.html?bookSearch=true
문제 해결
Real Time Monitoring Tool을 사용하여 다음 로그를 디버깅하고 수집합니다.
Cisco Unified Communications Manager
:
Cisco 푸시 알림 서비스
Cisco Management Agent 서비스
Cisco Unified Communications Manager IM and Presence:
Cisco XCP 구성 관리자
Cisco XCP 라우터
Cisco Push Notification Service 로그에서 CUCM이 여러 개의 알림을 받음을 확인할 수 있습니다 400개의 응답 토큰을 가져오는 동안 APNS가 실패하므로 카운터가 증가하지 않습니다.
2024-07-16 15:09:50,514 DEBUG [Timer-144] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400 2024-07-16 15:19:51,007 DEBUG [Timer-145] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400 2024-07-16 15:29:51,605 DEBUG [Timer-146] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400 2024-07-16 15:39:52,096 DEBUG [Timer-147] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400 2024-07-16 15:49:52,565 DEBUG [Timer-148] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400 2024-07-16 15:59:53,032 DEBUG [Timer-149] ccmpns.CCMPNServer (CCMPNServer.java:306) - fetchAndStoreAccessToken() Response received : 400
Cisco XCP Router 로그에서 호출이 수행되는 시점에 대해 유효하지 않은 응답을 볼 수 있습니다.
2024-07-16 17:21:43,464 DEBUG [Timer-1382] xmlframework.XCPConfigMgr - FetchAndStoreAccessToken: Calling createAccessToken() with granttype:refresh_token, refreshToken:MTc2YzFhN2YtMDA1Ny00MTVlLWJGZmMjcwYTU3MjY1NGI1NzItZmE0, accessTokenURL proxyUsernamenull 2024-07-16 17:21:43,468 INFO [Timer-1382] utilities.CloudOnboarding - TRACKING ID:::::::FOS_e8e8ee93-818f-4fe5-8a23-6b08a879b91b 2024-07-16 17:21:43,790 ERROR [Timer-1382] utilities.TomcatTrustManager - checkServerTrusted:entered 2024-07-16 17:21:43,791 ERROR [Timer-1382] utilities.TomcatTrustManager - checkServerTrusted:entered 2 2024-07-16 17:21:43,958 DEBUG [Timer-1382] xmlframework.XCPConfigMgr - XCPConfigMgr:Inside responseStatus() 2024-07-16 17:21:43,958 ERROR [Timer-1382] xmlframework.XCPConfigMgr - 400 Bad Request: invalid_request, unsupported_grant_type, invalid_client, invalid_refresh_token, tokenlimit_reached 2019-07-16 17:21:43,958 DEBUG [Timer-1382] xmlframework.XCPConfigMgr - XCPConfigMgr:FetchAndStoreAccessToken: Inside Finally Block
이는 알려진 Cisco 버그 ID CSCvi01660입니다.
솔루션
실험실 시스템을 구축하고 실험실에서 생산 시스템으로 Refresh Token을 업데이트합니다.
실험실 시스템을 배포한 후 다음 단계를 수행합니다.
1단계:
Call Manager 게시자에서 CLI 세션을 열고 "run sql select * from machineaccountdetails" 명령을 실행하고 모든 출력을 .txt 파일에 저장합니다.
모든 출력이 저장되면 Call Manager pkid에 각별히 주의해야 합니다. 예를 들어 실험실 환경은 "e40c24c0-cd4c-4256"입니다.
또한 실험실 환경에서 "run sql select * from machineaccountdetails" 명령을 실행하고 모든 출력을 .txt 파일에 저장합니다.
실험실 환경의 refreshtoken은 생산 환경에서 유효하지 않은 토큰을 교체하기 위해 사용하는 유효한 토큰이므로 각별히 주의하십시오. 우리의 실험실 환경에서는 "OGYyZGI2MWMtNjUwYy00Y2FiLThh".
2단계:
현재 작동하지 않는 새로 고침 토큰을 유효한 실험실 토큰으로 바꿔야 합니다.
프로덕션 페이지를 저장한 후 프로덕션 Call Manager 게시자에서 다음 sql 쿼리를 실행합니다.
sql update machine accountdetails set refreshtoken='여기 실험실 환경의 유효한 새로 고침 토큰이 있습니다.' 여기서 pkid='여기 프로덕션 pkid가 있습니다.'
이전 sql 쿼리는 비작동 토큰을 실험실 환경의 작동 토큰으로 변경합니다.
3단계:
랩 새로 고침 토큰으로 머신 어카운트 세부 정보를 업데이트한 후 다음 서비스를 다시 시작하십시오.
Cisco Unified Communications Manager
::
- CMAS(Cisco Management Agent Service)
- Cisco Push Notification Service(CCMPNS)
- 톰캣
Cisco Unified Communications Manager IM and Presence:
이러한 서비스는 서비스 영향을 받지 않도록 몇 시간 후에 다시 시작해야 합니다.
다음을 확인합니다.
이제 IMP를 포함한 모든 노드에서 "run sql select * from machineaccountdetails"를 다시 실행하고 내 새로 고침 토큰이 있는지 확인합니다.