存取令牌
存取令牌 是物件,描述 進程 或線程安全性內容。 令牌中的資訊包含與進程或線程相關聯之用戶帳戶的身分識別和許可權。 當使用者登入時,系統會藉由將密碼與儲存在安全性資料庫中的資訊進行比較,來驗證用戶的密碼。 如果密碼 已驗證,則系統會產生存取令牌。 代表此使用者執行的每個進程都有此存取令牌的複本。
當線程與 安全性實體對象互動時,系統會使用存取令牌來識別使用者, 或嘗試執行需要許可權的系統工作。 存取權杖包含下列資訊:
- 使用者帳戶 安全性識別碼 (SID)
- 用戶所屬群組的 SID
- 識別目前 登入會話的登入 SID
- 使用者或使用者群組所持有的 許可權清單
- 擁有者 SID
- 主要群組的 SID
- 當使用者建立安全性實體物件時,系統所使用的預設 DACL,而不需指定 安全性描述元
- 存取令牌的來源
- 令牌是 主要 還是 模擬 令牌
- 限制 SID 的選擇性清單
- 目前的模擬層級
- 其他統計數據
每個進程都有 主要令牌,描述與進程相關聯之用戶帳戶安全性內容。 根據預設,當進程線程與安全性實體對象互動時,系統會使用主要令牌。 此外,線程可以模擬客戶端帳戶。 模擬可讓線程使用用戶端的安全性內容與安全性實體對象互動。 模擬客戶端的線程同時具有主要令牌和 模擬令牌。
使用 OpenProcessToken 函式,擷取進程主要令牌的句柄。 使用 OpenThreadToken 函式來擷取線程模擬令牌的句柄。 如需詳細資訊,請參閱 模擬。
您可以使用下列函式來作存取令牌。
功能 | 描述 |
---|---|
AdjustTokenGroups | 變更存取令牌中的群組資訊。 |
AdjustTokenPrivileges | 啟用或停用存取令牌中的許可權。 它不會授與新的許可權或撤銷現有的許可權。 |
CheckTokenMembership | 判斷指定的 SID 是否在指定的存取令牌中啟用。 |
CreateRestrictedToken | 建立新的令牌,此令牌是現有令牌的受限制版本。 受限制的令牌可以停用 SID、已刪除的許可權,以及受限制的 SID 清單。 |
DuplicateToken | 建立複製現有令牌的新模擬令牌。 |
DuplicateTokenEx | 建立複製現有令牌的新主要令牌或模擬令牌。 |
GetTokenInformation | 擷取令牌的相關信息。 |
IsTokenRestricted | 判斷令牌是否有限制 SID 的清單。 |
OpenProcessToken | 擷取進程之主要存取令牌的句柄。 |
OpenThreadToken | 擷取線程模擬存取令牌的句柄。 |
SetThreadToken | 指派或移除線程的模擬令牌。 |
SetTokenInformation | 變更令牌的擁有者、主要群組或預設 DACL。 |
存取令牌函式會使用下列結構來描述存取令牌的部分。
結構 | 描述 |
---|---|
TOKEN_CONTROL | 識別存取令牌的資訊。 |
TOKEN_DEFAULT_DACL | 系統在線程所建立之新物件的安全性描述項中使用的預設 DACL。 |
TOKEN_GROUPS | 指定存取令牌中群組 SID 的 SID 和屬性。 |
TOKEN_OWNER | 新物件之安全性描述項的預設擁有者 SID。 |
TOKEN_PRIMARY_GROUP | 新物件之安全性描述項的預設主要群組 SID。 |
TOKEN_PRIVILEGES | 與存取令牌相關聯的許可權。 也決定是否啟用許可權。 |
TOKEN_SOURCE | 存取令牌的來源。 |
TOKEN_STATISTICS | 與存取令牌相關聯的統計數據。 |
TOKEN_USER | 與存取令牌相關聯的使用者 SID。 |
存取令牌函式會使用下列列舉型別。
列舉型別 | 指定 |
---|---|
TOKEN_INFORMATION_CLASS | 識別要設定或從存取令牌擷取的信息類型。 |
TOKEN_TYPE | 將存取令牌識別為主要或模擬令牌。 |