maxkey-mgt-security.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:mvc="http://www.springframework.org/schema/mvc"
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  6. xmlns:p="http://www.springframework.org/schema/p"
  7. xmlns:util="http://www.springframework.org/schema/util"
  8. xsi:schemaLocation="
  9. http://www.springframework.org/schema/beans
  10. http://www.springframework.org/schema/beans/spring-beans.xsd
  11. http://www.springframework.org/schema/context
  12. http://www.springframework.org/schema/context/spring-context.xsd
  13. http://www.springframework.org/schema/util
  14. http://www.springframework.org/schema/util/spring-util.xsd
  15. http://www.springframework.org/schema/mvc
  16. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  17. <!-- enable autowire -->
  18. <context:annotation-config />
  19. <!-- language select must remove -->
  20. <mvc:annotation-driven />
  21. <!--
  22. * Self-issued Provider Metadata
  23. *
  24. * http://openid.net/specs/openid-connect-core-1_0.html#SelfIssued
  25. * -->
  26. <bean id="oidcProviderMetadata" class="org.maxkey.config.oidc.OIDCProviderMetadataDetails">
  27. <property name="issuer" value="${config.oidc.metadata.issuer}" />
  28. <property name="authorizationEndpoint" value="${config.oidc.metadata.authorizationEndpoint}" />
  29. <property name="tokenEndpoint" value="${config.oidc.metadata.tokenEndpoint}" />
  30. <property name="userinfoEndpoint" value="${config.oidc.metadata.userinfoEndpoint}" />
  31. </bean>
  32. <bean id="jwkSetKeyStore" class="org.maxkey.crypto.jose.keystore.JWKSetKeyStore">
  33. <property name="location" value="classpath:config/keystore.jwks" />
  34. </bean>
  35. <bean id="jwtSignerValidationService" class="org.maxkey.crypto.jwt.signer.service.impl.DefaultJwtSigningAndValidationService">
  36. <constructor-arg name="keyStore" ref="jwkSetKeyStore" />
  37. <property name="defaultSignerKeyId" value="connsec_rsa" />
  38. <property name="defaultSigningAlgorithmName" value="RS256" />
  39. </bean>
  40. <bean id="jwtEncryptionService" class="org.maxkey.crypto.jwt.encryption.service.impl.DefaultJwtEncryptionAndDecryptionService">
  41. <constructor-arg name="keyStore" ref="jwkSetKeyStore" />
  42. <property name="defaultAlgorithm" value="RSA1_5" />
  43. <property name="defaultDecryptionKeyId" value="connsec_rsa" />
  44. <property name="defaultEncryptionKeyId" value="connsec_rsa" />
  45. </bean>
  46. <bean id="jwtLoginService" class="org.maxkey.authn.support.jwt.JwtLoginService">
  47. <property name="jwtSignerValidationService" ref="jwtSignerValidationService" />
  48. <property name="jwtProviderMetadata" ref="oidcProviderMetadata" />
  49. </bean>
  50. <!-- web Controller InterceptorAdapter -->
  51. <mvc:interceptors>
  52. <!-- web Controller InterceptorAdapter for platform permission -->
  53. <mvc:interceptor>
  54. <!-- for index -->
  55. <mvc:mapping path="/index/*" />
  56. <!-- for System -->
  57. <mvc:mapping path="/menus/*" />
  58. <mvc:mapping path="/roles/*" />
  59. <mvc:mapping path="/logs/*" />
  60. <mvc:mapping path="/userinfo/*" />
  61. <mvc:mapping path="/relyingparty/*" />
  62. <mvc:mapping path="/sysconfig/*" />
  63. <mvc:mapping path="/roles/*"/>
  64. <mvc:mapping path="/applications/*"/>
  65. <mvc:mapping path="/approles/*"/>
  66. <mvc:mapping path="/users/*" />
  67. <mvc:mapping path="/enterprises/*" />
  68. <mvc:mapping path="/employees/*" />
  69. <mvc:mapping path="/authInfo/*" />
  70. <mvc:mapping path="/usercenter/*"/>
  71. <bean class="org.maxkey.web.interceptor.PermissionAdapter" />
  72. </mvc:interceptor>
  73. <!-- web Controller InterceptorAdapter for platform log -->
  74. <mvc:interceptor>
  75. <mvc:mapping path="/users/*" />
  76. <mvc:mapping path="/userinfo/*" />
  77. <mvc:mapping path="/enterprises/*" />
  78. <mvc:mapping path="/employees/*" />
  79. <mvc:mapping path="/authInfo/*" />
  80. <mvc:mapping path="/usercenter/*"/>
  81. <mvc:mapping path="/retrievePassword/*"/>
  82. <mvc:mapping path="/roles/*"/>
  83. <mvc:mapping path="/applications/*"/>
  84. <mvc:mapping path="/approles/*"/>
  85. <bean class="org.maxkey.web.interceptor.LogAdapter" />
  86. </mvc:interceptor>
  87. <ref bean="localeChangeInterceptor" />
  88. </mvc:interceptors>
  89. <bean id="remeberMeService" class="org.maxkey.authn.support.rememberme.JdbcRemeberMeService">
  90. <constructor-arg ref="jdbcTemplate"/>
  91. <property name="validity" value="${config.login.remeberme.validity}"/>
  92. </bean>
  93. <bean id="timeBasedKeyUriFormat" class="org.maxkey.crypto.password.opt.algorithm.KeyUriFormat">
  94. <property name="type" value="totp" />
  95. <property name="digits" value="6" />
  96. <property name="issuer" value="ConnSec" />
  97. <property name="domain" value="connsec.com" />
  98. <property name="period" value="30" />
  99. </bean>
  100. <bean id="counterBasedKeyUriFormat" class="org.maxkey.crypto.password.opt.algorithm.KeyUriFormat">
  101. <property name="type" value="hotp" />
  102. <property name="digits" value="6" />
  103. <property name="issuer" value="maxkey" />
  104. <property name="domain" value="maxkey.org" />
  105. <property name="counter" value="0" />
  106. </bean>
  107. <bean id="hotpKeyUriFormat" class="org.maxkey.crypto.password.opt.algorithm.KeyUriFormat">
  108. <property name="type" value="hotp" />
  109. <property name="digits" value="6" />
  110. <property name="issuer" value="maxkey" />
  111. <property name="domain" value="maxkey.org" />
  112. <property name="counter" value="0" />
  113. </bean>
  114. <bean id="tfaOTPAuthn" class="org.maxkey.crypto.password.opt.impl.TimeBasedOTPAuthn">
  115. <constructor-arg ref="jdbcTemplate" />
  116. </bean>
  117. <!-- Authentication Password Encoder Config -->
  118. <bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"></bean>
  119. <bean id="passwordReciprocal" class="org.maxkey.crypto.password.PasswordReciprocal"></bean>
  120. <!-- Captcha Producer Config -->
  121. <bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
  122. <property name="config">
  123. <bean class="com.google.code.kaptcha.util.Config">
  124. <constructor-arg type="java.util.Properties">
  125. <props>
  126. <prop key="kaptcha.image.width">70</prop>
  127. <prop key="kaptcha.image.height">25</prop>
  128. <prop key="kaptcha.border">no</prop>
  129. <prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.ShadowGimpy</prop>
  130. <prop key="kaptcha.textproducer.font.size">23</prop>
  131. <prop key="kaptcha.textproducer.char.string">0123456789</prop>
  132. <prop key="kaptcha.textproducer.char.length">4</prop>
  133. <prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop>
  134. <!-- <prop key="kaptcha.noise.color">white</prop>
  135. -->
  136. </props>
  137. </constructor-arg>
  138. </bean>
  139. </property>
  140. </bean>
  141. <!-- Follow is config for Spring security -->
  142. <!--<csrf disabled="true"/>-->
  143. <!-- Login
  144. <http use-expressions="false" disable-url-rewriting="false" xmlns="http://www.springframework.org/schema/security" >
  145. <headers>
  146. <frame-options policy="SAMEORIGIN" />
  147. </headers>
  148. <access-denied-handler error-page="/login"/>
  149. <intercept-url pattern="/index" access="ROLE_USER" />
  150. <intercept-url pattern="/forwardindex" access="ROLE_USER" />
  151. <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY,ROLE_USER" />
  152. <form-login authentication-failure-url="/login"
  153. default-target-url="/forwardindex"
  154. login-page="/login"
  155. login-processing-url="/logon.do"
  156. username-parameter="j_username"
  157. password-parameter="j_password"
  158. authentication-success-handler-ref="savedRequestSuccessHandler"/>
  159. <logout logout-url="/logout.do" logout-success-url="/logout" invalidate-session="true" delete-cookies="JSESSIONID" />
  160. <session-management invalid-session-url="/login" />
  161. <anonymous />
  162. </http>
  163. -->
  164. <bean id="savedRequestSuccessHandler" class="org.maxkey.authn.SavedRequestAwareAuthenticationSuccessHandler"> </bean>
  165. <!-- spring authentication provider
  166. <authentication-manager alias="authenticationProvider" xmlns="http://www.springframework.org/schema/security"/>
  167. -->
  168. <!-- LDAP Realm
  169. <bean id="authenticationRealm" class="org.maxkey.web.authentication.realm.ldap.LdapAuthenticationRealm">
  170. <constructor-arg ref="jdbcTemplate"/>
  171. <property name="ldapServers">
  172. <list>
  173. <bean id="ldapServer1" class="org.maxkey.web.authentication.realm.ldap.LdapServer">
  174. <property name="ldapUtils">
  175. <bean id="ldapUtils" class="org.maxkey.ldap.LdapUtils">
  176. <property name="providerUrl" value="ldap://localhost:389"></property>
  177. <property name="principal" value="cn=root"></property>
  178. <property name="credentials" value="rootroot"></property>
  179. <property name="baseDN" value="dc=connsec,dc=com"></property>
  180. </bean>
  181. </property>
  182. <property name="filterAttribute" value="uid"></property>
  183. </bean>
  184. </list>
  185. </property>
  186. </bean> -->
  187. <!-- Active Directory Realm
  188. <bean id="authenticationRealm" class="org.maxkey.web.authentication.realm.activedirectory.ActiveDirectoryAuthenticationRealm">
  189. <constructor-arg ref="jdbcTemplate"/>
  190. <property name="activeDirectoryServers">
  191. <list>
  192. <bean id="activeDirectory1" class="org.maxkey.web.authentication.realm.activedirectory.ActiveDirectoryServer">
  193. <property name="activeDirectoryUtils">
  194. <bean id="ldapUtils" class="org.maxkey.ldap.ActiveDirectoryUtils">
  195. <property name="providerUrl" value="ldap://localhost:389"></property>
  196. <property name="principal" value="cn=root"></property>
  197. <property name="credentials" value="rootroot"></property>
  198. <property name="domain" value="connsec"></property>
  199. </bean>
  200. </property>
  201. </bean>
  202. </list>
  203. </property>
  204. </bean> -->
  205. <!-- Radius Server Realm
  206. <bean id="authenticationRealm" class="org.maxkey.web.authentication.realm.radius.RadiusServerAuthenticationRealm">
  207. <constructor-arg ref="jdbcTemplate"/>
  208. <property name="jradiusServers">
  209. <list>
  210. <bean id="radiusServer1" class="org.maxkey.web.authentication.realm.radius.RadiusServer">
  211. <property name="inetAddress" value="localhost"/>
  212. <property name="secret" value="test1234"/>
  213. </bean>
  214. </list>
  215. </property>
  216. </bean>-->
  217. <!-- Default Realm-->
  218. <!-- realm use jdbc -->
  219. <bean id="authenticationRealm" class="org.maxkey.authn.realm.jdbc.JdbcAuthenticationRealm">
  220. <constructor-arg ref="jdbcTemplate"/>
  221. </bean>
  222. <!-- Authentication providers -->
  223. <bean id="authenticationProvider" class="org.maxkey.authn.RealmAuthenticationProvider" >
  224. </bean>
  225. <!--
  226. <authentication-manager alias="authenticationManager" xmlns="http://www.springframework.org/schema/security">
  227. <authentication-provider ref= "realmAuthenticationProvider"/>
  228. </authentication-manager>
  229. -->
  230. <mvc:annotation-driven />
  231. <mvc:default-servlet-handler />
  232. </beans>