Shiro+Webseal作單點登陸

在平常的項目中,使用Shiro一般都會實現本身的AuthorizingRealm,在實現AuthorizingRealm的同時須要設置Hash算法及迭代次數。以下:java

HashedCredentialsMatcher matcher = new HashedCredentialsMatcher(SystemService.HASH_ALGORITHM);
matcher.setHashIterations(SystemService.HASH_INTERATIONS);
setCredentialsMatcher(matcher);

與Webseal作SSO時,只能獲取到用戶的ID,在沒有密碼的狀況下告訴Shiro使用無密碼驗證。算法

setCredentialsMatcher(new AllowAllCredentialsMatcher());

AllowAllCredentialsMatche始終返回true。安全

最後一步就是在LoginController里加個SSO的方法,獲取用戶ID,生成Token對象,調用 login服務器

UsernamePasswordToken token = new UsernamePasswordToken();
		
token.setUsername(userId);
		
UserUtils.getSubject().login(token);

還能夠在SSO方法裏作請求來源服務器的識別等,增強安全。code

相關文章
相關標籤/搜索