![](/img/trans.png)
[英]Authenticate on Azure AD with username and password in a Node.js web app
[英]Has anyone successfully used Azure AD to authenticate users for a Node.js web application?
我試圖使用Azure Active Directory來驗證我的node.js Web應用程序的用戶,到目前為止沒有運氣。
我想知道是否有人實際上已經實現它,因為文檔很差。 通常有示例代碼,但實際上並未表明所需參數是什么以及它們應該是什么。
我曾嘗試過passport-azure-ad(我認為是來自微軟)和passport.azure-ad-oauth2(來自Auth0(?))。 對於passport-azure-ad,我已經嘗試過BearerStrategy和OIDCStrategy而沒有運氣。
對於BearerStrategy,我得到一些關於我的客戶端和資源的一些神秘信息,用於識別相同的應用程序,但由於沒有文檔告訴我應該是什么,所以我很茫然。
對於OIDCStrategy,我更接近於我被重定向到Microsoft進行身份驗證,但是在返回時我收到錯誤“錯誤:ID令牌不存在響應”。 我猜我的請求不正確,無論出於何種原因都給我一個令牌,但由於沒有文件...(你明白了)。
無論如何,如果有人真的成功地實現了它並且能夠分享關於如何實現它的一些指示,那將是偉大的。
非常感謝。
下面是一個代碼示例,該示例涉及將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應用程序頁面。 單擊配置選項卡以配置AD。
將AD應用程序的Azure AD端點填充到config.js
的identityMetadata
屬性中。 正如代碼中的注釋所示,如果您的Azure AD位於Microsoft域中,例如: 然后您不必更改設置。 否則,您需要將
config.js
中端點中的common
替換為您的AD ID,您可以單擊底部導航中的VIEW ENDPOINT來查找ID:
在config.js
配置clientID
和clientSecret
。 您可以在AD應用程序的CONFIGRE頁面中找到它們: 關於密鑰,您可以選擇下拉列表以選擇創建新密鑰的持續時間,單擊底部導航欄中的保存按鈕,您可以在首次創建密鑰數據時查看密鑰數據。
完成這些步驟后,您可以嘗試示例項目。
對我來說,這個(無代碼解決方案)在新的Azure門戶中工作 :
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.