我試圖寫我自己的ServerAuthModule
,使用自定義登錄系統需求的用戶組成員。是否有可能來確定,而不是在ServerAuthModule(JASPIC)登錄時
如果我明白了一切正確的,什麼情況是,容器調用每一個傳入請求validateRequest方法,而我的SAM將檢查憑證,並告訴容器中的用戶的用戶名和組(如果證書右)通過CallbackHandler。
public class MySAM implements ServerAuthModule {
@Override
public AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject, Subject serviceSubject) throws AuthException {
// check user credentials
...
// set username and groups
CallerPrincipalCallback cpCallback = new CallerPrincipalCallback(clientSubject, username);
GroupPrincipalCallback gpCallback = new GroupPrincipalCallback(clientSubject, groups);
callbackHandler.handle(new Callback[]{cpCallback, gpCallback}
return AuthStatus.SUCCESS;
}
...
}
我現在的問題是,當用戶登錄時,我不知道用戶屬於哪個組。我只能檢查用戶是否在給定的組中。是否有可能給容器一個方法,它可以檢查一個用戶是否在給定的組中,而不是給它一個包含validateRequest
方法中的組的數組?
boolean isInGroup(String username, String group) {
// ask backend system
}
除了答案之外,我已經完全實現了這一點,作爲使用自定義授權規則可以完成的示例。請參閱http://arjan-tijms.omnifaces.org/2016/07/simplified-custom-authorization-rules.html – 2016-07-25 11:49:07