我正在尝试编写自己的ServerAuthModule,以使用自定义登录系统。
如果我理解一切正确,那么容器会为每个传入请求调用 validateRequest 方法,并且我的 SAM 将检查凭据,并通过回调处理程序。
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
}