当前位置: 首页 > 知识库问答 >
问题:

使用Azure Active Directory访问令牌的承载身份验证

卞经业
2023-03-14

我正在使用带有承载策略的Passport AAD项目来保护我的endpoint。当我在登录时收到带有OIDC策略的令牌后,我似乎无法获得承载策略来验证访问令牌的签名。我得到:

authentication failed due to: invalid signature

我没有问题验证id_token,但如果id_token不能用AAD刷新,我更希望不要在我们的客户端应用程序中使用它。此外,当使用jwt.io测试发布的公钥的验证时,我看到了同样的问题(可以验证id_token,但不能验证access_token)。

identityMetadata: https://login.microsoftonline.com/your_tenant_name.onmicrosoft.com/.well-known/openid-configuration,
responseType: 'id_token code'
const callbackOIDC = (iss, sub, profile, accessToken, refreshToken, params, done) => {
  return done(null,{
    profile,
    accessToken,
    refreshToken
  });
};

passport.use(new OIDCStrategy(config.creds, callbackOIDC));

然后运行authenticate,如下所示:

auth.adCallback = function (req, res, next) {
  passport.authenticate('azuread-openidconnect', {
    response: res,
    resourceURL: 'https://graph.microsoft.com',
    session: false
  }, function (err, user, info) {
    console.log(user.access_token);
  })(req, res, next);
};

我想我可能是通过指定资源URL在上面请求一个图访问令牌。如果我移除那个资源URL,我仍然得到一个访问令牌,但是承载策略抛出一个无效令牌错误(而不是无效签名错误)。是否有一个不同的资源URL我应该设置与我的租户匹配并获得我正在寻找的访问令牌?

共有1个答案

汤弘文
2023-03-14

您请求的是什么访问令牌?例如,如果访问令牌是针对Microsoft图形使用的,那么验证它们是图形的任务,而不是您的应用程序的任务。您能否详细说明您正在尝试实现的具体场景,以及在什么时候需要刷新id_tokens?

 类似资料:
  • 我正在尝试在ASP.NET5中实现OAuth承载令牌身份验证,并且正在努力寻找一个如何实现这一点的示例,因为OWIN的东西在ASP.NET5中发生了变化。 例如IApplicationBuilder.UseOAuthAuthorizationServer()和IApplicationBuilder。UseOAuthBearerAuthentication()要么不再存在,要么缺少引用? 如有任何指

  • 我正在做一个项目(没有生产级别,只是为了提高我的技能),我正在使用JWT来处理身份验证。从我所读到的内容来看,仅使用JWT作为访问令牌是非常不安全的,因此我们需要刷新令牌。因此,在登录时,服务器返回一个访问令牌和一个刷新令牌(我将存储在httpOnly cookie中)。访问令牌在短时间内到期,但刷新令牌在到期时用于获取新令牌。 我的问题是,我们何时使用刷新令牌来获取新的访问令牌?是当用户想要获得

  • 我试图弄清楚我应该如何坚持身份验证。 假设用户使用电子邮件和密码成功进行身份验证。然后服务器生成并返回两个令牌: accesstoken(jwt过期15分钟)将存储在浏览器存储中 refreshtoken(jwt过期7天)作为安全cookie 当将访问令牌存储在本地存储(或会话存储)中时,React 应用程序将简单地检查它是否存在于存储中并继续渲染私有路由。因此,这意味着如果用户有一个无效/被盗的

  • 我在令牌使用者上得到以下错误。任何帮助解决这将是非常感谢的。多谢了。 “IDX10503:签名验证失败。 公共无效配置(IApplicationBuilder应用程序)

  • 我正在开发一个使用Spring Boot 2.4.1和Spring Security 5.4.2的Web应用程序,我需要提供HTTP基本身份验证和持有者令牌身份验证(JWT访问令牌从SPA发送用于每次API调用)。所有 API URL 都以路径 /api 开头,并且必须使用持有者令牌进行身份验证,但使用 HTTP Basic 所需的两个 URL(/api/func1 和 /api/func2)除外