我開發了安全驗證模塊(SAM)並實施了validateRequest
方法。我也有一個簡單的webapp配置使用這個SAM。如何在JASPIC中保存經過身份驗證的用戶?
在我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());
}
我注意到,每次我刷新一個servlet在我的web應用程序中,客戶對象是簡單的空白,logger.debug("Client: {}", clientSubject);
:
2015-05-05 11:21:02,200 DEBUG n.m.j.s.Saml2AuthModule [http-listener-1(2)] Client: Subject:
是否有可能「拯救」的對象以某種方式使主體連接到會話,我可以簡單地跳過記錄在S ame用戶每次?
編輯我想我找到了一種通過手動將其存儲在HttpSession
:req.getSession().setAttribute("subject", user);
不漂亮,但它的作品。
謝謝,阿爾詹,我知道你對這個主題非常瞭解(發現了很多來自你的博客文章),並且正在尋找一種方法來伸手。我很高興你找到了我。 :) – Davio
@Davio歡迎您,希望答案是有幫助的;) –
非常有幫助,我很高興我不是唯一一個認爲這是目前規範中的遺漏,我會投我的票。 – Davio