主题
密码加密工具类
java
import cn.hutool.core.codec.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
import java.nio.charset.StandardCharsets;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
public class RsaUtil {
private static final String PUBLIC_KEY ="-----BEGIN PUBLIC KEY-----\n" +
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArk1+aXdzCbb6Y3t6QMyI4yGSECowASpZkmPebPwymJk0Jo63LBLoSdmvnUbKUzPwWR4aJnNYnCT9YoQWMkdHpbbCfOCgB661vpvQcbKJm9WitJE81bzEBya0iNmu93asfyrnK/+Md+KDa9xtyOXN4MPV7/xiBtpYh2alDmncRyUzO0Ieo8EdZje31xcV+9TayTQGkvIpau4tn4wmsPJ5s4iMUxRqkaURd6pKdn8bD5lJ6iUKTi0ZsqFNvNFikeHq6cMY1PUUeb1pj5aDYq1tKE4Ux6pZhsAxNo5QZevi5c0+vLPjA7x0fY2A/Cvk3S01bqDG0Ty1aY0AxMNpCOCRBQIDAQAB\n" +
"-----END PUBLIC KEY-----";
// 使用公钥加密
public static String encrypt(String data) throws Exception {
byte[] encodedKey = Base64.decode(PUBLIC_KEY);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(encodedKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
return Base64.encode(encryptedData); // 返回Base64编码字符串
}
}账号密码校验
| 接口名称 | url | 请求方式 | 请求数据类型 |
|---|---|---|---|
| 账号密码校验 | /api/sso/auth/appCheckUser | POST | application/json |
请求参数
| 参数名称 | 二级参数 | 参数说明 | 是否必填 | 数据类型 | 备注说明 |
|---|---|---|---|---|---|
| userName | 用户名 | 是 | string | 用户名 | |
| password | 密码 | 是 | string | 密码(加密后的),密码需要通过Rsa公钥加密,返回Base64编码字符串 | |
| appId | client_id | 是 | string | 应用ID | |
| secret | 应用的secret | 是 | string | 应用的secret | |
| timestamp | 当前北京时间 | 是 | long | 当前北京时间,Unix格式13位时间戳,精确到毫秒,3分钟内有效。 | |
| scope | 授权级别:user | 是 | string | 授权级别:user |
json
curl --request POST \
--url https://sso-test.tbea.com/api/sso/auth/appCheckUser \
--header 'Accept: */*' \
--header 'Accept-Encoding: gzip, deflate, br' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImluc3RpdHV0aW9uIjoiMSIsImtpZCI6InNzb19hdXRoX2p3ayIsImpvYk5vIjoiIiwiaXNzIjoiaHR0cDpcL1wvMTI3LjAuMC4xOjgwODBcLyIsInVzZXJUeXBlIjoiRU1QTE9ZRUUiLCJleHAiOjE3NDgzMzQxODcsImxvY2FsZSI6IiIsImlhdCI6MTc0ODMyNjk4NywianRpIjoiMTEyNDMwNTU3OTAwMzYwOTA4OCJ9.9uZpJZ8tq61rRBx7eMuyLpxlLreceYVnQ5Jm4YvvPMM' \
--header 'Connection: keep-alive' \
--header 'Content-Type: application/json' \
--header 'Cookie: JSESSIONID=AD45B420C0C4A6ED7EA90E2FBD557FC4' \
--header 'User-Agent: PostmanRuntime-ApipostRuntime/1.1.0' \
--data '{
"userName":"xxx",
"password":"rDvLLnNVr3NGGpJb6BxYE0sj27XfnPtf7bUYnAGr35t7S9R6j9jTFaGETIHa+2/GyO+5JbXljNqP6U+ORSZJ5ljauhDaMohpBPqUglAJUVnoTuMfLGtsoqQLklDzeOf6WvcI+9gjSU3G02W+NVabIuRtmHttJoLv9mG3MC1dImABolQWz3GrjlJZ1ljYylUnH3PO/r6XuF+mhxYzjvvmlM9dpk7U3qOrb52xxxCO406lpruE3bNOk6Z589/T2reKUALHPNnxjzjGp4l5jWbwVU5ARcmfVcSlvQf3ZQZljGPP16dLNC0UWq1aP3apuxqob3ICV3Gby32ZjszIfx7P6jfgg==",
"appId":"xxx",
"secret":"JL4LMTUwNTIwMjUyMDA1NDIyNTkpnJ",
"timestamp":1762151698659,
"scope":"user"
}'返回值
json
成功返回
{
"code": 200,
"message": null,
"data": true,
"errorCode": 0,
"success": true
}
错误返回
{
"code": 500,
"message": "系统异常",
"data": null
}
{
"code": 500,
"message": "时间戳3分钟内有效",
"data": null,
"errorCode": 1,
"success": false
}