如何使用 passport-azure-ad (/w vue-msal) 保护 Web API

我想使用 passport-azure-ad 保护 Web API 并使用 bearerStrategy。我按照模块提供的示例并传递元数据和 clientId,我总是得到 401 未授权。


这是我的 passport-azure-ad 配置


{


  identityMetadata: 'https://login.microsoftonline.com/<your_tenant_guid>/v2.0/.well-known/openid-configuration'

  

  // Required

  clientID: '<client ID>',


  // Required.

  // If you are using the common endpoint, you should either set `validateIssuer` to false, or provide a value for `issuer`.

  validateIssuer: false,


  // Required. 

  // Set to true if you use `function(req, token, done)` as the verify callback.

  // Set to false if you use `function(req, token)` as the verify callback.

  passReqToCallback: false,


  // Optional. Default value is false.

  // Set to true if you accept access_token whose `aud` claim contains multiple values.

  allowMultiAudiencesInToken: false,


  loggingLevel:'error',

};

}

我为授权请求标头提供了 vue-msal 生成的访问令牌。

我还检查了访问令牌的签名也无效。


此外,我改用了 ID 令牌,但仍然 401 未经授权。


在 portal /AAD /App registration 中,我启用了隐式授权流程、accessTokenAcceptedVersion: 2、在 API 权限中为我的订阅授予管理员同意


我还错过了什么?


小怪兽爱吃肉
浏览 100回答 1
1回答

饮歌长啸

在您的情况下,您可以按照此使用passport.authenticate来保护资源或 API,同时确保在使用 vue-msal 获取令牌时使用正确的范围。server.get('/api/tasks',&nbsp;passport.authenticate('oauth-bearer',&nbsp;{&nbsp;session:&nbsp;false&nbsp;}),&nbsp;listTasks);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java