nacos2.3版本,为什么还能使用默认密钥登录,如何配置可校验token?

Nacos2.3默认密钥登录是因为历史遗留问题,可以通过配置鉴权插件实现token校验。
nacos2.3版本,为什么还能使用默认密钥登录,如何配置可校验token?

【nacos2.3版本为什么还能使用默认密钥登录,如何配置可校验token?】

在nacos2.3版本中,默认情况下,用户可以使用默认密钥登录,这是因为nacos默认提供了一个内置的用户和密码验证机制,该机制允许用户使用默认的用户名和密码进行身份验证,默认情况下,用户名为"admin",密码为"nacos"。

为了提高系统的安全性,我们可以配置nacos以使用可校验的token来进行身份验证,下面是配置nacos以使用可校验token的步骤:

1、添加依赖项:确保你的项目中包含了必要的依赖项,对于nacos2.3版本,你需要引入以下依赖:

<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacosclient</artifactId>
    <version>2.3.0</version>
</dependency>

2、创建Token验证类:接下来,创建一个用于生成和验证token的类,这个类将包含一些用于生成token、解析token以及验证token的方法,以下是一个简单的示例:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class TokenValidator {
    private static final String SECRET_KEY = "yourSecretKey"; // 替换为你自己的密钥
    private static final long EXPIRATION_TIME = 3600 1000; // 设置token过期时间为1小时(单位毫秒)
    public String generateToken(String username) {
        String token = username + "|" + System.currentTimeMillis();
        return Base64.getEncoder().encodeToString(token.getBytes());
    }
    public boolean validateToken(String token) {
        try {
            String[] parts = new String(Base64.getDecoder().decode(token)).split("\\|");
            if (parts.length != 2) {
                return false;
            }
            String username = parts[0];
            long expirationTime = Long.parseLong(parts[1]);
            if (System.currentTimeMillis() > expirationTime) {
                return false;
            }
            // 在这里可以添加其他验证逻辑,比如检查用户名是否存在等。
            return true;
        } catch (IllegalArgumentException e) {
            return false;
        }
    }
}
nacos2.3版本,为什么还能使用默认密钥登录,如何配置可校验token?

请注意,上述代码中的SECRET_KEY需要替换为你自己的密钥,你还可以根据实际情况调整EXPIRATION_TIME的值来设置token的过期时间。

3、修改登录逻辑:你需要修改nacos的登录逻辑,以便在用户尝试登录时生成并验证token,下面是一个示例:

import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
import com.alibaba.nacos.auth.credentials.Credentials;
import com.alibaba.nacos.auth.credentials.CredentialsMatcher;
import com.alibaba.nacos.auth.credentials.TokenCredentials;
import com.alibaba.nacos.auth.impl.*;
import com.alibaba.nacos.common.utils.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.nio.*;
import java.security.*;
import java.util.*;
import java.util.concurrent.*;
import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.*;
import javax.servlet.*;
import javax
nacos2.3版本,为什么还能使用默认密钥登录,如何配置可校验token?

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/463008.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年5月5日 19:54
下一篇 2024年5月5日 19:56

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入