安全上下文基礎:用戶,主題和主體
瀏覽人數:491最近更新:
- security
1.概述
安全性是任何Java應用程序的基本組成部分。此外,我們可以找到許多可以處理安全問題的安全框架。此外,在這些框架中,我們通常使用一些術語,例如主題,主體和用戶。
在本教程中,我們將解釋安全框架的這些基本概念。另外,我們將顯示它們之間的關係和差異。
2.主題Subject
在安全上下文中,主題表示請求的來源。對像是獲取有關資源的信息或修改資源的實體。此外,主題還可以是用戶,程序,進程,文件,計算機,數據庫等。
例如,一個人需要授權對資源和應用程序的訪問以認證請求源。在這種情況下,這個人是一個主體。
讓我們看一下基於JAAS
框架實現的示例:
Subject subject = loginContext.getSubject();
PrivilegedAction privilegedAction = new ResourceAction();
Subject.doAsPrivileged(subject, privilegedAction, null);
3.Principal
成功通過身份驗證後,我們將獲得一個填充的主題,該主題具有許多關聯的身份,例如角色,社會保險號(SSN)等。換句話說,這些標識符是principal,主題代表它們。
例如,一個人可能具有帳號主體(“ 87654-3210”)和其他唯一標識符,從而將其與其他主體區分開。
讓我們看看UserPrincipal
並將其添加到Subject:
@Override
public boolean commit() throws LoginException {
if (!loginSucceeded) {
return false;
}
userPrincipal = new UserPrincipal(username);
subject.getPrincipals().add(userPrincipal);
return true;
}
4.用戶
通常,用戶代表訪問資源以執行某些動作或完成工作任務的人。
同樣,我們可以將用戶用作委託人,另一方面,委託人是分配給用戶的身份。 UserPrincipal
是上一節中討論JAAS
框架中用戶的一個很好的例子.
5.主題,Principal和用戶之間的區別
如上節所述,我們可以使用委託人來表示同一用戶身份的不同方面。它們是主題的子集,而用戶是指的是最終用戶或交互式運算符的主體的子集。
六,結論
在本教程中,我們討論了主題,Principal和用戶的定義,這些定義在大多數安全框架中都很常見。此外,我們展示了它們之間的區別。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議