在平常的項目中,使用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