You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

刷新OIDC令牌时遇“Wrong issuer”错误的解决求助

解决Azure + Angular + Java令牌刷新时的"Wrong issuer"及后续问题

一、修复"Wrong issuer"错误

该错误核心是前端angular-oauth2-oidc配置的issuer值与Azure返回令牌中的iss声明不匹配,或库对Azure AD的issuer格式识别异常。

1. 确认Azure AD的正确Issuer值

Azure AD的issuer分v1、v2两个版本:

  • v1端点格式:https://sts.windows.net/{tenant-id}/
  • v2端点格式:https://login.microsoftonline.com/{tenant-id}/v2.0

将refresh token放入JWT解码工具查看payload中的iss字段,将该值完全复制到前端issuer配置项中。

2. 配置库适配Azure AD格式

若使用v2端点,需开启strictDiscoveryDocumentValidation: false适配Azure的发现文档,不要随意设置skipIssuerCheck: true(会绕过安全校验,引发后续JWKS问题)。修改后的前端配置示例:

issuer: "https://login.microsoftonline.com/{你的租户ID}/v2.0", // 替换为实际issuer值
clientId: "{你的客户端ID}",
redirectUri: window.location.origin + "/auth-callback",
postLogoutRedirectUri: window.location.origin,
showDebugInformation: environment.env === 'local',
disablePKCE: true, // 机密客户端(有client_secret)可关闭,优先推荐使用PKCE
strictDiscoveryDocumentValidation: false // 关键配置:适配Azure AD发现文档

二、解决"Parameter jwks expected!"错误

该错误是跳过issuer检查后,库无法自动从Azure发现文档获取JWKS密钥集导致的,禁止手动配置JWKS,正确做法如下:

  1. 确保issuer配置正确,库会自动请求{issuer}/.well-known/openid-configuration获取发现文档,其中包含jwks_uri,库将自动拉取JWKS。
  2. 移除skipIssuerCheck: true配置,恢复安全校验。
  3. 检查前端是否能正常访问Azure的发现文档(Azure AD端点默认支持CORS,本地环境无需额外配置)。

三、后端Java刷新令牌的参数规范

后端刷新令牌请求需保证参数完全正确:

  • grant_type固定为refresh_token
  • client_id、client_secret与前端使用的应用凭据一致
  • refresh_token为之前获取的有效令牌

请求格式示例:

String refreshTokenRequest = String.format(
    "grant_type=refresh_token&client_id=%s&refresh_token=%s&client_secret=%s",
    clientId, refreshToken, clientSecret
);

总结

  1. 优先修正issuer配置,确保与令牌iss声明完全一致,开启strictDiscoveryDocumentValidation: false适配Azure AD。
  2. 禁用skipIssuerCheck: true,避免引入JWKS相关风险。
  3. 检查后端刷新请求的参数格式,确保grant_type和refresh_token正确。

内容的提问来源于stack exchange,提问作者RagaSGNur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:25:38