我开发了一个安全认证模块(SAM)并实现了该validateRequest方法.我还有一个简单的webapp配置为使用此SAM.
在我的validateRequest方法中,我检查clientSubject并CallerPrincipalCallback使用硬编码的用户名和GroupPrincipalCallback带有硬编码组名的设置:
final CallerPrincipalCallback callerPrincipalCallback = new CallerPrincipalCallback(clientSubject, "anonymous");
final GroupPrincipalCallback groupPrincipalCallback = new GroupPrincipalCallback(clientSubject, new String[] {"user"});
try {
this.handler.handle(new Callback[] {callerPrincipalCallback, groupPrincipalCallback});
} catch (IOException | UnsupportedCallbackException e) {
logger.error(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
我注意到每次我在webapp中刷新servlet时,客户端主题都是空白的,logger.debug("Client: {}", clientSubject);:
2015-05-05 11:21:02,200 DEBUG n.m.j.s.Saml2AuthModule [http-listener-1(2)] Client: Subject:
Run Code Online (Sandbox Code Playgroud)
是否有可能以某种方式"保存"主题,以便主题附加到会话,我可以简单地每次都跳过登录同一个用户?
编辑我想我找到了一种方法,通过手动存储它HttpSession:req.getSession().setAttribute("subject", user);不漂亮,但它的工作原理.