【问题标题】:How to secure Web API with passport-azure-ad (/w vue-msal)如何使用 passport-azure-ad (/w vue-msal) 保护 Web API
【发布时间】:2020-11-23 12:30:28
【问题描述】:

我想使用 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 token,但还是401未授权。

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

我还错过了什么?

【问题讨论】:

  • 该包似乎允许承载令牌身份验证:github.com/AzureAD/passport-azure-ad#42-bearerstrategy
  • @juunas 谢谢,但我看到 BearerStrategy 不接受任何现有的不记名令牌。它自己获取令牌。
  • 这是你想要的吗? github.com/AzureAD/…
  • @JoyWang 这是我的错,没有清楚地阅读介绍,但我面临新问题,即响应 302 状态的 api 调用。 l 将更新问题描述。谢谢
  • @JoyWang 我更新了问题。希望可以理解

标签: javascript azure azure-active-directory passport-azure-ad


【解决方案1】:

在您的情况下,您可以关注此Use passport.authenticate to protect resources or APIs,同时确保在使用 vue-msal 获取令牌时使用正确的范围。

server.get('/api/tasks', passport.authenticate('oauth-bearer', { session: false }), listTasks);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2020-11-29
    相关资源
    最近更新 更多