Nacos开启鉴权之后,bootstrap.yml增加spring.cloud.nacos.config.username 和 password,如下:
spring:
application:
name: @artifactId@
active: test
cloud:
nacos:
config:
server-addr: ${NACOS_HOST:192.168.21.60:8848}
namespace: ${NACOS_NAMESPACE:xxx-xxx-xxx}
username: ${NACOS_USERNAME:nacos}
password: ${NACOS_PASSWORD:nacos}
但应用启动时,总是出错403,鉴权失败。
- 排错过程:
先做一个简单的logback配置文件logger-debug.xml,把nacos的日志输出设置的详细一些:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %L - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.alibaba.cloud.nacos" level="TRACE">
<appender-ref ref="STDOUT"/>
</logger>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
启动时指定这个日志文件:java -Dlogger.config=logger-debug.xml -jar myapp.jar
可可以看到在 HttpLoginProcessor 这个类的 78行 ,登录认证时错了个异常:
login failed: {"code":404,"message":"<!doctype html><html lang=\"en\"><head><title>HTTP Status 404 – Not Found</title><style type=\"text/css\">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1></body></html>
代码如图:
可以看到登录的url拼上了一个 contextPath,上溯代码可知,对应配置 spring.cloud.nacos.config.context-path。加上即可:
context-path: /nacos
简单记录供参考。