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

Guardian验证Azure AD Access Token JWT时secret_key如何配置?

问题解答

核心结论

是的,你必须使用Azure AD提供的公钥来验证RS256算法签名的JWT令牌。Client Secret仅适用于HS256这类对称加密算法的验签,这就是你之前收到invalid_token错误的根本原因。

具体配置步骤

  • 获取Azure AD的公钥集合(JWKS)
    Azure AD会通过OpenID发现端点对外暴露JWKS(JSON Web Key Set),其中包含用于验签的公钥。你可以从Azure AD的租户OpenID配置中找到对应的JWKS端点地址。

  • 配置Guardian使用JWKS验签
    不需要手动复制粘贴公钥,Guardian支持直接从JWKS端点自动获取并刷新密钥,避免密钥更新导致的验证失败。在你的Elixir项目配置文件(如config/config.exs)中做如下配置:

    config :my_app, MyApp.Guardian,
      issuer: "https://login.microsoftonline.com/{你的租户ID}/v2.0",
      allowed_algos: ["RS256"],
      verify_issuer: true,
      signing_keys: %{"jwks" => "https://login.microsoftonline.com/{你的租户ID}/discovery/v2.0/keys"}
    
  • 确保Plug配置匹配
    确认你的Guardian VerifyHeader Plug使用的算法是RS256,比如:

    plug Guardian.Plug.VerifyHeader, realm: "Bearer", algorithm: "RS256"
    

额外排查点

如果配置公钥后仍有invalid_token错误,还需要检查:

  • 令牌中的iss(发行方)声明是否和Guardian配置的issuer完全一致
  • 令牌中的aud(受众)声明是否包含你的后端应用的Client ID
  • 令牌是否已过期(检查exp声明)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:09:22