Node.js 使用正确的oauth2凭据通过NodeJS使用Passport.js连接到AzureDevops

Node.js 使用正确的oauth2凭据通过NodeJS使用Passport.js连接到AzureDevops,node.js,azure-devops,passport.js,Node.js,Azure Devops,Passport.js,我无法确定使用Passport.js通过NodeJS连接Azure Devops时必须使用的确切凭据 我使用的策略如下所述: 在AzureDevops中,我已经在:Authorized OAuth Apps下创建了一个应用程序,然后在那里可以使用以下信息: 这是我用于创建策略的当前代码: passport.use("azure-devops", new AzureOAuth2Strategy({ clientID: process.env.AZURE_DEVOPS_CL

我无法确定使用Passport.js通过NodeJS连接Azure Devops时必须使用的确切凭据

我使用的策略如下所述:

在AzureDevops中,我已经在:Authorized OAuth Apps下创建了一个应用程序,然后在那里可以使用以下信息:

这是我用于创建策略的当前代码:

passport.use("azure-devops", new AzureOAuth2Strategy({
  clientID: process.env.AZURE_DEVOPS_CLIENT_ID,
  clientSecret: process.env.AZURE_DEVOPS_CLIENT_SECRET,
  callbackURL: process.env.AZURE_DEVOPS_CALLBACK_URL,
  resource: process.env.AZURE_DEVOPS_RESOURCE,
  tenant: process.env.AZURE_DEVOPS_TENANT,
  prompt: 'consent',
  state: true
},
function (accessToken, refreshtoken, params, profile, done) {
  var user = jwt.decode(params.id_token, "", true);
  done(null, user);
}));

passport.serializeUser(function(user, done) {
   done(null, user)
})
passport.deserializeUser(function(obj, done) {
   done(null, obj)
});

app.use(passport.initialize())
app.use(passport.session())
现在我不明白的是要在相应的凭证字段中填写哪些信息。尤其让我困惑的是字段“租户”和字段“资源”。Passport.js将这些字段描述为可选字段,但是,如果我不使用“租户”字段,当我使用/auth/login路径进入microsoft登录页面时,我将进入一个循环。这意味着,当我输入电子邮件和密码时,它会将我重定向回登录,这是无止境的。如果我添加带有ID的“租户”字段(我不确定需要使用哪个ID)。 我收到以下错误:

我应该在策略的这些字段中添加什么?我在哪里可以找到这些信息

同样让我感到困惑的是,在我添加了我的应用程序并转到仪表板了解添加的应用程序后,它说我还没有授予任何应用程序的访问权限,尽管我以前添加过该应用程序。。。我这边看起来是这样的:


我在这里到底做错了什么?

Passport-azure-oauth2策略用于验证访问azure资源的权限而不是azure devops。这个策略实际上就是Azure

如果您想使用Oauth2作为azure devops的身份验证。您应该使用OAuth2授权代码授权流。有关更多信息,请参阅下面的文档

。这里有一个你可以退房的房间

有很多方法可以通过Azure DevOps服务验证您的应用程序。查看更多示例


至于Passport.js,您可以查看它是Passport的兄弟项目,它提供了一个用于实现OAuth 2.0授权服务器的工具包。

感谢您的解释,我有点认为这不是正确的方法,我认为我可以专门使用Passport.js来实现这一点,但似乎我不能。我还发现这个官方的microsoft使用OAuth2连接AzureDevops:。我将检查您发送的示例项目,我认为它将帮助我正确地实施它。将其标记为正确答案。