存取權杖
存取權杖是描述進程或執行緒安全性內容的物件。 權杖中的資訊包含與進程或執行緒相關聯之使用者帳戶的身分識別和許可權。 當使用者登入時,系統會將使用者的密碼與儲存在安全性資料庫中的資訊進行比較,以驗證使用者的密碼。 如果 密碼經過驗證,系統會產生存取權杖。 代表此使用者執行的每個進程都有此存取權杖的複本。
當執行緒與 安全性實體物件 互動或嘗試執行需要許可權的系統工作時,系統會使用存取權杖來識別使用者。 存取權杖包含下列資訊:
- 使用者帳戶 的安全性識別碼 (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。 |
存取權杖函式會使用下列結構來描述存取權杖的部分。
結構 | Description |
---|---|
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 | 將存取權杖識別為主要或模擬權杖。 |