Android集成Passkey时Okta认证编码报错求助
Android Passkey集成问题:WebAuthn因子验证失败
在Android应用中集成Passkey时,尝试获取并验证多个WebAuthn因子时触发错误,核心异常如下:
java.lang.IllegalArgumentException: com.google.common.io.BaseEncoding$DecodingException: Unrecognized character: _
请求上下文信息:is_oie_org=false, org=00oc3vreva8vw5cvh0h7, metauri=/api/v1/authn/factors/{factorIdOrFactorType}/verify, client_ip_address=167.146.72.49, is_optional_password_org=false, root_session_id=trsLDzEct81TV2VYQVuiA0VTA, request_id=2908dcd72215b6554db0863b73f064ab, user=00u2ascud1gCWt9oi0h8, external_session_id=trswfTgO14ERzCPlPKszFhQqw, root_api_token_id=00T2z8eyyaOYn5ccj0h7
错误请求
{"authenticatorData": "PvPO1XNKRiD0tJnwSi75hMHPMEF/zaPxqriDzVVWhpAFAAAAAA==","clientData": "eyJjaGFsbGVuZ2UiOiIybERxQnpvdmxJdE5tOXdZVXVBeXVRU0xtaW5tTGRsciIsInR5cGUiOiJ3ZWJhdXRobi5nZXQiLCJvcmlnaW4iOiJodHRwczpcL1wvd3d3LXFhMS5zYWZld2F5LmNvbSIsImNyb3NzT3JpZ2luIjoiZmFsc2UifQ==","signatureData": "MEUCIQDrB2Jo63W01li2u/gkWe6G+b4hNT8mlpFMgVPpeQydSQIgEM2i4reQRquBBHXUensV8tJHByC0mga/JQZBkOL9U+I=","stateToken": "00xCQaS9M0xrbo4BZ_L28PYbLT2p6KZJzFigEr2N4O"}
错误响应
{"errors": [{"errorCode": "CSMS0120","message": "Invalid Passcode/Answer"}]}
解决建议
- 修正Base64编码格式:异常明确指出无法识别下划线
_,说明请求中使用了URL安全的Base64编码(用_替代/、-替代+),但后端可能仅支持标准Base64。需将所有相关字段(尤其是stateToken)中的_替换为/,-替换为+,再重新发送请求。 - 校验stateToken完整性:确认
stateToken是否在生成后被错误修改,确保传递的是服务端返回的原始值,或按要求完成编码转换。 - 统一WebAuthn字段编码:检查
authenticatorData、clientData、signatureData等字段的编码格式,确保与后端要求一致,避免混合使用不同Base64变种。 - 核对WebAuthn接口规范:确认验证接口接受的Base64类型,若支持URL安全编码,需在请求时配置对应解析逻辑。
内容的提问来源于stack exchange,提问作者Rahul Deep Singh
相关产品推荐
相关产品推荐

