Skip to main content

AD 登入

Active Diretory Login

Windows的AD(Active Directory)登錄機制是一種身份驗證機制,它可以讓用戶使用網絡資源,如文件共享、打印機等。AD是一個分層的樹狀結構,類似於目錄服務,它包含許多目錄的走廊,每個目錄大致上對應一個網絡中的資源,並且可以將用戶擺放在不同的目錄中,以完成管理操作。

當用戶需要登陸AD時,他們需要輸入他們的用戶名和密碼。然後,用戶的請求將被發送到域控制器(DC),它是一個專門管理AD的服務器。DC將驗證用戶名和密碼是否正確,如果正確,就會向用戶提供一個安全憑證(即票證),該憑證將被用戶用於訪問網絡資源。

此機制的安全性建立在用戶的密碼中,所以對於安全性的考量,用戶需要建立一個強大的密碼。此外,企業需要妥善管理AD,並采取適當的安全措施,如強化密碼策略,限制訪問權限等,以確保AD的安全性和完整性。

GitHub - jlguenego/vue-sso-example: Vue example for node-expose-sspi

SSO

上面提到的 AD login 其實和 SSO 是很像的。

SSO(Single Sign-On)是一種網路安全技術,通過單一登錄的方式實現跨系統、跨平臺的身份驗證和授權管理。當用戶登錄一個網站後,這個網站會向一個中心身份驗證系統提交用戶的身份信息,中心系統在驗證通過後,會向其他需要驗證的網站發送身份認證信息和授權信息,使用戶可以無需重新輸入帳號密碼,完成在不同網站間的身份驗證和授權操作。SSO技術具有提高用戶體驗、減少系統開發維護成本、增強系統安全性等優點。

只需要一個地方登入就可以,讓所以有地方使用,只有一個地方 logout 所以有地方,就都會 logout 了。

OAuth

OAuth 是一種授權標準協議,用來授權第三方應用程式訪問用戶在其他網站、應用程式上存儲的資源,並確保用戶的資料得到安全保護。透過 OAuth,用戶可以使用自己的帳號和密碼登入第三方應用程式,而不需要向應用程式直接透露自己的帳號和密碼。此外,OAuth 還能限制第三方應用程式只能訪問用戶授權的特定資源,並在用戶不再使用該應用程式時撤銷授權。OAuth 被廣泛應用於社交媒體、雲端儲存、API 調用等場景。

可以透過它輕鬆達到各平台的登入,但是各平台又沒有互相關聯,如果有一方登出,其它地方還是登入狀態。

在 linux 系統中取得身份

npm i node-expose-sspi

Note: There is a prebuilt binary node addon that will be installed.

Usage

SSO Authentication server use case

mkdir myproject
cd myproject
npm init -y
npm i express
npm i node-expose-sspi

Make an express web server by doing the server.js file:

const express = require('express');
const { sso } = require('node-expose-sspi');

const app = express();
app.use(sso.auth());

app.use((req, res, next) => {
res.json({
sso: req.sso,
});
});

app.listen(3000, () => console.log('Server started on port 3000'));
node server.js

Browser on http://localhost:3000

{
"sso": {
"method": "NTLM",
"user": {
"domain": "JLG",
"name": "jlouis",
"displayName": "Jean-Louis P. GUÉNÉGO",
"groups": [
"JLG\\Domain Users",
"\\Everyone",
// ...
],
"sid": "S-1-5-21-2022955591-1730574677-3210790899-1103",
"adUser": {
// adUser filled only if Active Directory is reachable.
// ...
"givenName": ["Jean-Louis"],
"sn": ["GUÉNÉGO"],
"c": ["FR"],
"l": ["TORCY"],
"postalCode": ["77200"],
"title": ["IT Consultant"],
"description": ["My microsoft domain account for demonstrating SSO"]
}
}
}
}

Note: To read JSON file on Chrome, you should use the JSON Formatter Chrome Extension.

這邊有一段 server 的範例