Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用passport azure ad(/w vue msal)保护Web API_Javascript_Azure_Azure Active Directory_Passport Azure Ad - Fatal编程技术网

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

Javascript 如何使用passport azure ad(/w vue msal)保护Web API,javascript,azure,azure-active-directory,passport-azure-ad,Javascript,Azure,Azure Active Directory,Passport Azure Ad,我想用passport azure广告保护Web API,并使用BearStrategy。我遵循模块提供的示例并传递元数据和clientId,我总是得到401个未授权 这是我的passport azure广告配置 { identityMetadata: 'https://login.microsoftonline.com/<your_tenant_guid>/v2.0/.well-known/openid-configuration' // Required cl

我想用passport azure广告保护Web API,并使用BearStrategy。我遵循模块提供的示例并传递元数据和clientId,我总是得到401个未授权

这是我的passport azure广告配置

{

  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',
};
}
{
identityMetadata:'https://login.microsoftonline.com//v2.0/.well-known/openid-configuration'
//必需的
客户端ID:“”,
//必需的。
//如果使用的是公共端点,则应将“validateIssuer”设置为false,或为“issuer”提供一个值。
验证者:错,
//必需的。
//如果使用“function(req,token,done)”作为验证回调,则设置为true。
//如果使用'function(req,token)`作为验证回调,则设置为false。
passReqToCallback:false,
//可选。默认值为false。
//如果接受其'aud'声明包含多个值的access_令牌,则设置为true。
AllowMultiAudienceInToken:false,
日志级别:'错误',
};
}
我为授权请求标头提供了vue msal生成的访问令牌。
我还检查了访问令牌的签名是否无效

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

在portal/AAD/App注册中,我启用了隐式授权流、
accessTokenAcceptedVersion:2、
、为我在API中的订阅授予管理员许可


我还遗漏了什么?

在您的情况下,您可以遵循此操作,并确保在使用vue msal获取令牌时使用了正确的作用域

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

在您的情况下,您可以遵循这一点,并确保在使用vue msal获取令牌时使用了正确的作用域

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

该包似乎允许承载令牌身份验证:@juunas谢谢,但我看到BearerStrategy不接受任何现有的承载令牌。它自己获得令牌。这是你想要的吗@JoyWang这是我的错,我没有读清楚介绍,但我面临的新问题是api调用的响应302状态。我会更新问题描述。Thanks@JoyWang我更新了问题。希望可以理解的是,这个包似乎允许对承载令牌进行身份验证:@juunas谢谢,但我看到BearerStrategy不接受任何现有的承载令牌。它自己获得令牌。这是你想要的吗@JoyWang这是我的错,我没有读清楚介绍,但我面临的新问题是api调用的响应302状态。我会更新问题描述。Thanks@JoyWang我更新了问题。希望这是可以理解的