我正在尝试使用Azure Active Directory对我的node.js Web应用程序的用户进行身份验证,到目前为止没有运气。
我想知道是否有人实际上已经实现过,因为文档很差。通常有示例代码,但实际上没有任何关于所需参数是什么以及它们应该是什么的指示。
我曾尝试过passport-azure-ad(我认为是来自微软)和passport.azure-ad-oauth2(来自Auth0(?))。对于passport-azure-ad,我已经尝试过BearerStrategy和OIDCStrategy而没有运气。
对于BearerStrategy,我收到一些关于我的客户端和资源的神秘信息,这些信息标识了相同的应用程序,但由于没有文档告诉我应该是什么,我不知所措。
对于OIDCStrategy,我更接近于我被重定向到Microsoft进行身份验证,但是在返回时我收到错误"错误:ID令牌在响应中不存在"。我猜测我的请求不够正确,无论出于何种原因都给我一个令牌,但由于没有文档......(你明白了)。
无论如何,如果有人真的成功地实现了它,并且能够分享一些如何实现它的指示,那就太棒了。
非常感谢。
答案 0 :(得分:7)
以下是一个代码示例,该示例涉及将Azure AD集成到Microsoft在GitHub上提供的NodeJS Web应用程序中,https://github.com/Azure-Samples/active-directory-node-webapp-openidconnect。
要使示例运行,您需要在示例代码中配置有关Azure AD的一些设置。
我们可以在应用程序根目录的config.js
文件中找到如下内容:
exports.creds = {
returnURL: 'http://localhost:3000/auth/openid/return',
identityMetadata: 'https://login.microsoftonline.com/common/.well-known/openid-configuration', // For using Microsoft you should never need to change this.
clientID: '<your app id>',
clientSecret: '<your secret>', // if you are doing code or id_token code
skipUserProfile: true, // for AzureAD should be set to true.
responseType: 'id_token code', // for login only flows use id_token. For accessing resources use `id_token code`
responseMode: 'query', // For login only flows we should have token passed back to us in a POST
//scope: ['email', 'profile'] // additional scopes you may wish to pass
};
现在您需要登录Azure管理门户,标题到您的Azure AD应用程序页面。点击 CONFIGURE 标签配置您的广告。
将AD应用程序的Azure AD端点填充到identityMetadata
中的config.js
属性中。正如代码中的注释所示,如果您的Azure AD位于Microsoft域中,如:
然后您不必更改设置。否则,您需要将common
中端点中的config.js
替换为您的AD ID,您可以点击底部导航中的查看ENDPOINT 来查找ID:{{ 3}}
在clientID
中配置clientSecret
和config.js
。您可以在AD应用程序的 CONFIGRE 页面中找到它们:
关于密钥,您可以选择下拉列表以选择密钥的持续时间来创建新密钥,单击底部导航栏中的保存按钮,您可以在第一次创建密钥数据时看到密钥数据。
完成这些步骤后,您可以尝试示例项目。
答案 1 :(得分:1)
对我来说,这个(无代码解决方案)在new Azure Portal:
中有效