{"record":{"id":"0186e37b0092aeeb","repo":"HKUDS/nanobot","slug":"serviceurl-claim-mismatch","errorCode":null,"errorMessage":"serviceUrl claim mismatch","messagePattern":"serviceUrl claim mismatch","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"nanobot/channels/msteams/runtime.py","lineNumber":512,"sourceCode":"\n        public_key = RSAAlgorithm.from_jwk(json.dumps(jwk))\n        claims = jwt.decode(\n            token,\n            key=cast(Any, public_key),\n            algorithms=[\"RS256\"],\n            audience=self.config.app_id,\n            issuer=\"https://api.botframework.com\",\n            options={\n                \"require\": [\"exp\", \"nbf\", \"iss\", \"aud\"],\n            },\n        )\n\n        claim_service_url = str(\n            claims.get(\"serviceurl\") or claims.get(\"serviceUrl\") or \"\",\n        ).strip()\n        activity_service_url = str(activity.get(\"serviceUrl\") or \"\").strip()\n        if claim_service_url and activity_service_url and claim_service_url != activity_service_url:\n            raise ValueError(\"serviceUrl claim mismatch\")\n\n    async def _get_botframework_openid_config(self) -> dict[str, Any]:\n        \"\"\"Fetch and cache Bot Framework OpenID configuration.\"\"\"\n\n        now = time.time()\n        if self._botframework_openid_config and now < self._botframework_openid_config_expires_at:\n            return self._botframework_openid_config\n\n        if not self._http:\n            raise RuntimeError(\"MSTeams HTTP client not initialized\")\n\n        resp = await self._http.get(self._botframework_openid_config_url)\n        resp.raise_for_status()\n        openid_config = cast(dict[str, Any], resp.json())\n        self._botframework_openid_config = openid_config\n        self._botframework_openid_config_expires_at = now + 3600\n        return openid_config\n","sourceCodeStart":494,"sourceCodeEnd":530,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/channels/msteams/runtime.py#L494-L530","documentation":"Error \"serviceUrl claim mismatch\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/channels/msteams/runtime.py:512 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"42f37dc4c0e409eac7818a82d165c5f2757bc075","analyzedAt":"2026-08-26T00:18:52.276Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}