卡片消息回调代码有问题,设置了密码和token之后配置不了,同样的密码和token,事件回调可以通过验证,卡片订阅不能通过验证,事件回调的地址放到卡片订阅也可以通过。
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- java
- Área
- api, authentication
Línea de trabajo
Comienza con los dos métodos verifySign(EventReq eventReq) mostrados en el issue y compara su uso de verificationToken, encryptKey y calculateSignature. Reproduce la validación con la misma clave y el mismo token para las callbacks de eventos y las suscripciones de tarjetas; se considera terminado cuando ambos tipos de callbacks superan de forma consistente la verificación de firma con una configuración coincidente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
如题。我们在使用事件回调和卡片消息回调时同样的key和token,一个能通过校验,一个不能。通过排查,发现两个方法SDK的签名验证逻辑的代码不一样,一个用的是key,一个用的token
` private boolean verifySign(EventReq eventReq) throws NoSuchAlgorithmException {
if (Strings.isEmpty(verificationToken)) {
return true;
}
String cipherEventJsonStr = new String(eventReq.getBody(), StandardCharsets.UTF_8);
String timestamp, nonce, sourceSign, targetSign;
timestamp = eventReq.getHeaderFirstValue(Constants.X_LARK_REQUEST_TIMESTAMP);
nonce = eventReq.getHeaderFirstValue(Constants.X_LARK_REQUEST_NONCE);
sourceSign = eventReq.getHeaderFirstValue(Constants.X_LARK_SIGNATURE);
targetSign = calculateSignature(timestamp, nonce, verificationToken, cipherEventJsonStr);
return targetSign.equals(sourceSign);
}`
`private boolean verifySign(EventReq eventReq) throws NoSuchAlgorithmException {
if (Strings.isEmpty(encryptKey)) {
return true;
}
String cipherEventJsonStr = new String(eventReq.getBody(), StandardCharsets.UTF_8);
String timestamp, nonce, sourceSign, targetSign;
timestamp = eventReq.getHeaderFirstValue(Constants.X_LARK_REQUEST_TIMESTAMP);
nonce = eventReq.getHeaderFirstValue(Constants.X_LARK_REQUEST_NONCE);
sourceSign = eventReq.getHeaderFirstValue(Constants.X_LARK_SIGNATURE);
targetSign = calculateSignature(timestamp, nonce, encryptKey, cipherEventJsonStr);
return targetSign.equals(sourceSign);
}`
使用key的可以通过校验,使用token的不能通过。我理解两个事件应该是一样的处理鉴权的逻辑,有人能帮忙看看吗?
- Lenguaje dominante
- Java
- Estrellas
- 310
- Forks
- 115
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de larksuite/oapi-sdk-java
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
larksuite/oapi-sdk-java#196 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
larksuite/oapi-sdk-java#191 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
larksuite/oapi-sdk-java#149 ·
-
接口响应类型错误 Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
larksuite/oapi-sdk-java#79 ·
-
什么时候能加入云文档的"修订"功能 Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
larksuite/oapi-sdk-java#195 ·
Todos los issues de larksuite/oapi-sdk-java
Issues similares
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Abiertoarea/plugin
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
kestra-io/plugin-kestra#190 ·
-
litertlm-android AAR ships no consumer ProGuard rules → "mid == null" SIGABRT in minified apps Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
Add canonical URLs and a sitemap Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
integra-team-red/meet-map#249 ·
-
[Studio][Bug] Cancelled create-user dialog keeps the password and admin switch for the next attempt Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
apache/rocketmq-dashboard#5064 ·
-
Consent portal: creating a duplicate Purpose shows a generic error instead of "already exists" Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
wso2/dpdp-accelerator#287 ·