使用nest-keycloak-connect遇ISS错误:realmUrl缺失前缀
解决Nest.js + nest-keycloak-connect中"invalid token (wrong ISS)"错误
问题根源
出现"invalid token (wrong ISS)"错误的核心原因是Keycloak配置中的auth-server-url缺少了Keycloak的标准路径后缀/auth,导致nest-keycloak-connect生成的realmUrl不完整,无法与token中的issuer(ISS)字段匹配。
解决方案
1. 修正Keycloak配置
将auth-server-url补充完整的路径后缀/auth,修改后的配置如下:
keycloak: { 'auth-server-url': 'http://192.168.0.35:9090/auth', // 添加/auth后缀 realm: 'my-realm', 'ssl-required': 'external', resource: 'my-api', 'confidential-port': '0', clientId: 'my-api', secret: 'secret', },
2. 验证Token的Issuer字段
通过JWT解码工具查看获取到的token,确认iss字段格式为:http://192.168.0.35:9090/auth/realms/my-realm
该值需要与nest-keycloak-connect内部生成的realmUrl完全一致,才能通过验证。
3. 额外检查项
- 确认Swagger配置中的
realm值与Keycloak配置的realm完全一致 - 登录Keycloak后台,检查客户端
my-api的设置:- 访问类型需设置为
confidential - 已启用"服务账户"
- 配置的
secret与代码中填写的完全匹配
- 访问类型需设置为
内容的提问来源于stack exchange,提问作者imv
相关产品推荐
相关产品推荐

