spring security多入口登入
專案中集成了ldap的驗證,從其他應用跳轉過來希望不進行二次登入。
因為ldap的使用者名稱和密碼已經在登入中滅失,所以無法在應用中做再次提交驗證。
幸好其他應用和專案是可以共享資料庫,所以用資料庫共享使用者資訊進行免手工登入驗證。
具體是其他應用對資料庫表portal_admin插入一條使用者登入請求,使用者名稱不變,密碼用一串隨機字元。
專案配置多入口
<security:authentication-manager>
<security:authentication-provider>
<security:jdbc-user-service
users-by-username-query="select portal_id as username, portal_admin as password, 1 as enabled from pmart.portal_admin where portal_id = ?"
authorities-by-username-query="select user_id as username, role_id as authority from pmart.portal_user2role where user_id = ?"
data-source-ref="dataSource"/>
</security:authentication-provider>
<security:authentication-provider ref="ldapActiveDirectoryAuthProvider" />
</security:authentication-manager>
在這個配置下,會首先用jdbc-user-service進行驗證,如果沒通過則使用ldap進行驗證。
專案達到其他應用跳轉不需要手工登入的目的。
spring security的好處是,僅僅通過xml的配置就可以完成各種驗證的任務。
當然,特殊目的可以自己擴充套件程式設計。