什么是 @deloittesolutions/passport-azure-ad?
@deloittesolutions/passport-azure-ad 是一个基于 Passport 的用于认证和授权微软 Azure AD (Active Directory) 的 Node.js 库。正常情况下,当用户在管理 Azure 帐户时,需要使用用户名和密码进行身份验证,@deloittesolutions/passport-azure-ad 可以帮助开发者在应用程序中使用 Azure AD 作为身份验证提供者。
如何使用 @deloittesolutions/passport-azure-ad
准备工作
- 首先你需要在 Azure AD 中创建一个应用程序,获取下面属性:
clientID
: 应用程序 ID。clientSecret
: 应用程序机密。callbackURL
: 验证完成后需要重定向到的 URL。identityMetadata
: Azure AD 租户上的 OpenID 连接元数据文档的 URL。
- 安装 @deloittesolutions/passport-azure-ad:
npm install @deloittesolutions/passport-azure-ad
导入模块
在你的应用程序中,你需要导入以下模块:
const passport = require('passport'); const OIDCStrategy = require('@deloittesolutions/passport-azure-ad').OIDCStrategy;
配置 OIDCStrategy
在你的应用程序中,你需要配置 OIDCStrategy。这可以通过以下代码完成:
-- -------------------- ---- ------- ---------------- -------------- ----------------- -------------------------------------------------------------------------------------------------------- --------- ------------------- ------------- ----- ---------- ------------- ------------ ------------ ---------------------------------------------- ------------------------ ----- ------------- ----------------------- --------------- ------ ------------------ ------ ------ ----------- ------------------ -- -------- ----- ---- -------- ------------ ------------- ----- - -- -------------- - ------ -------- --------- --- -------- ------ - -- ------------ ------------- --- --------- ------------------------- -- - ------ ---------- --------- --- - ---
上面的代码定义了所有必需的参数,这些参数是:
clientID
和clientSecret
: 从 Azure AD 应用程序设置中获取。identityMetadata
:Azure AD 租户上的 OpenID 连接元数据文档的 URL。可以在 Azure AD 的“凭据”下面找到该 URL。redirectUrl
:在成功验证时将用户重定向到的地址。responseType
和responseMode
: 在应用程序收到用户回调时的操作,这是所需的值。scope
:应用程序需要的权限。
配置 express.js
让你的应用程序支持 passport.js,你需要通过以下代码来配置 express.js:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- -------- - -------------------- ----- ------------ - ------------------------- ----- ------- - --------------------------- ----- --- - ---------- ------------------------ ----------------- ------- ------ ------- ------ ------------------ ----- ---- ------------------------------- ----------------------------
路由
现在,我们需要处理几个路由:
-- -------------------- ---- ------- ------------ -------- ----- ---- - ------------------- - ---------------- ---------------------- ----- -------- - -------- - -- --- - -- ----------------- -------- ----- ---- - -------------------- - -- ------------------ ---------------------------------------------- - ---------------- -------- --- -------- ----- ---- - ------------------ - -- ------------------ -------- ----- ---- - ---------------------------- ----- - ------------- ------------------ --- --- -------------------------------- ---------------------------------------------- - ---------------- -------- --- -------- ----- ---- - ------------------ - --
在这个例子中,我们定义了以下路由:
/
:站点的主页,根据用户是否已验证来显示不同的结果。/login
:用于登录的页面。/logout
:用于注销的页面。/auth/openid/callback
:用于处理 Azure AD 回调的页面。
Views
创建视图来呈现 HTML,我们需要使用模板引擎。在这个例子中,我们将使用 EJS。
要使用 EJS,需要先安装以下模块:
npm install ejs
请注意,安装模块后,我们需要将模板引擎注册到 express.js。
app.set('views', './views'); app.set('view engine', 'ejs');
然后,我们创建两个视图,分别为 login.ejs 和 index.ejs。在 login.ejs 中,我们将创建登录表单:
-- -------------------- ---- ------- ----- ------------- ---------------- ---- ------------------- ------ ------------------------------- ------ ----------- -------------------- ------------- --------------- ----------------------- ------ ---- ------------------- ------ ------------------------------- ------ --------------- -------------------- ------------- --------------- ----------------------- ------ ------- ------------- ---------- ---------------------------- -------
在 index.ejs 中,我们将根据用户是否已验证来显示不同的消息。
<p><% if (isAuthenticated) { %>Hello, <%= user.displayName %>.<% } %> This is a test page.</p> <p><% if (isAuthenticated) { %><a href="/logout">Log out</a><% } else { %><a href="/login">Log in</a><% } %></p>
Example Code
最后,完成所有准备工作后,完整的示例代码如下所示:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- -------- - -------------------- ----- ------------ - ------------------------------------------------------------- ----- ------------ - ------------------------- ----- ------- - --------------------------- ----- --- - --------------- ----- --- - ---------- ------------------------ ----------------- ------- ------ ------- ------ ------------------ ----- ---- ------------------------------- ---------------------------- ---------------- -------------- ----------------- -------------------------------------------------------------------------------------------------------- --------- ------------------- ------------- ----- ---------- ------------- ------------ ------------ ---------------------------------------------- ------------------------ ----- ------------- ----------------------- --------------- ------ ------------------ ------ ------ ----------- ------------------ -- -------- ----- ---- -------- ------------ ------------- ----- - -- -------------- - ------ -------- --------- --- -------- ------ - ------------------------- -- - ------ ---------- --------- --- - --- ------------ -------- ----- ---- - ------------------- - ---------------- ---------------------- ----- -------- - -------- - -- --- - -- ----------------- -------- ----- ---- - -------------------- - -- ------------------ ---------------------------------------------- - ---------------- -------- --- -------- ----- ---- - ------------------ - -- ------------------ -------- ----- ---- - ---------------------------- ----- - ------------- ------------------ --- --- -------------------------------- ---------------------------------------------- - ---------------- -------- --- -------- ----- ---- - ------------------ - -- ---------------- ----------- ------------- -------- ------- ---------------- -- -- - ---------------------- -- ------------------------ ---
以上就是对 @deloittesolutions/passport-azure-ad 的详细教程,希望可以帮助到需要开发基于 Azure AD 的应用程序的开发者和程序员。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055d2e81e8991b448daeb4