Drop extensions from package names
- Throughout the codebase dropping extensions from org.springframework.security.extensions.kerberos. - Fixes #16
This commit is contained in:
@@ -233,8 +233,8 @@ configure(rootProject) {
|
||||
}
|
||||
|
||||
task copyDocsSamples(type: Copy) {
|
||||
from 'spring-security-kerberos-core/src/test/java/org/springframework/security/extensions/kerberos/docs/'
|
||||
from 'spring-security-kerberos-client/src/test/java/org/springframework/security/extensions/kerberos/client/docs/'
|
||||
from 'spring-security-kerberos-core/src/test/java/org/springframework/security/kerberos/docs/'
|
||||
from 'spring-security-kerberos-client/src/test/java/org/springframework/security/kerberos/client/docs/'
|
||||
include '**/*.java'
|
||||
include '**/*.xml'
|
||||
into 'docs/src/reference/asciidoc/samples'
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
*.java
|
||||
*.xml
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- tag::snippetA[] -->
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:sec="http://www.springframework.org/schema/security"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
|
||||
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
|
||||
|
||||
<sec:http>
|
||||
<sec:intercept-url pattern="/secure/**" access="IS_AUTHENTICATED_FULLY" />
|
||||
<sec:form-login login-page="/login.html" default-target-url="/secure/index.jsp"/>
|
||||
</sec:http>
|
||||
|
||||
<sec:authentication-manager alias="authenticationManager">
|
||||
<sec:authentication-provider ref="kerberosAuthenticationProvider"/>
|
||||
</sec:authentication-manager>
|
||||
|
||||
<bean id="kerberosAuthenticationProvider"
|
||||
class="org.springframework.security.extensions.kerberos.KerberosAuthenticationProvider">
|
||||
<property name="kerberosClient">
|
||||
<bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosClient">
|
||||
<property name="debug" value="${krb.debug}"/>
|
||||
</bean>
|
||||
</property>
|
||||
<property name="userDetailsService" ref="dummyUserDetailsService"/>
|
||||
</bean>
|
||||
|
||||
<bean
|
||||
class="org.springframework.security.extensions.kerberos.GlobalSunJaasKerberosConfig">
|
||||
<property name="debug" value="${krb.debug}" />
|
||||
<!-- You can point to a different kerberos config location here, if you don't want the default one -->
|
||||
<property name="krbConfLocation" value="${krb.conf.location}"/>
|
||||
</bean>
|
||||
|
||||
<bean id="dummyUserDetailsService"
|
||||
class="org.springframework.security.extensions.kerberos.sample.DummyUserDetailsService" />
|
||||
|
||||
<context:property-placeholder location="/WEB-INF/kerberos.properties"/>
|
||||
</beans>
|
||||
<!-- end::snippetA[] -->
|
||||
@@ -31,10 +31,10 @@ def customizePom(pom, gradleProject) {
|
||||
generatedPom.project {
|
||||
name = gradleProject.description
|
||||
description = gradleProject.description
|
||||
url = 'http://static.springsource.org/spring-security/site/extensions/krb/index.html'
|
||||
url = 'http://projects.spring.io/spring-security-kerberos'
|
||||
organization {
|
||||
name = 'SpringSource'
|
||||
url = 'http://springsource.org/spring-security-kerberos'
|
||||
url = 'http://projects.spring.io/spring-security-kerberos/'
|
||||
}
|
||||
licenses {
|
||||
license {
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.client;
|
||||
package org.springframework.security.kerberos.client;
|
||||
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.Hashtable;
|
||||
@@ -30,7 +30,7 @@ import javax.security.auth.login.LoginException;
|
||||
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.ldap.core.support.LdapContextSource;
|
||||
import org.springframework.security.extensions.kerberos.client.config.SunJaasKrb5LoginConfig;
|
||||
import org.springframework.security.kerberos.client.config.SunJaasKrb5LoginConfig;
|
||||
import org.springframework.security.ldap.DefaultSpringSecurityContextSource;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
@@ -41,12 +41,12 @@ import org.springframework.util.Assert;
|
||||
* Example usage:
|
||||
*
|
||||
* <pre>
|
||||
* <bean id="authorizationContextSource" class="org.springframework.security.extensions.kerberos.ldap.KerberosLdapContextSource">
|
||||
* <bean id="authorizationContextSource" class="org.springframework.security.kerberos.ldap.KerberosLdapContextSource">
|
||||
* <constructor-arg value="${authentication.ldap.ldapUrl}" />
|
||||
* <property name="referral" value="ignore" />
|
||||
*
|
||||
* <property name="loginConfig">
|
||||
* <bean class="org.springframework.security.extensions.kerberos.client.config.SunJaasKrb5LoginConfig">
|
||||
* <bean class="org.springframework.security.kerberos.client.config.SunJaasKrb5LoginConfig">
|
||||
* <property name="servicePrincipal" value="${authentication.ldap.servicePrincipal}" />
|
||||
* <property name="useTicketCache" value="true" />
|
||||
* <property name="isInitiator" value="true" />
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.client;
|
||||
package org.springframework.security.kerberos.client;
|
||||
|
||||
import java.net.URI;
|
||||
import java.security.Principal;
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.client.config;
|
||||
package org.springframework.security.kerberos.client.config;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.client;
|
||||
package org.springframework.security.kerberos.client;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.junit.Assert.assertThat;
|
||||
@@ -49,8 +49,9 @@ import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.http.client.ClientHttpResponse;
|
||||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
||||
import org.springframework.security.extensions.kerberos.test.KerberosSecurityTestcase;
|
||||
import org.springframework.security.extensions.kerberos.test.MiniKdc;
|
||||
import org.springframework.security.kerberos.client.KerberosRestTemplate;
|
||||
import org.springframework.security.kerberos.test.KerberosSecurityTestcase;
|
||||
import org.springframework.security.kerberos.test.MiniKdc;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.client;
|
||||
package org.springframework.security.kerberos.client;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@@ -29,10 +29,10 @@ import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
|
||||
|
||||
@Configuration
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.client;
|
||||
package org.springframework.security.kerberos.client;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@@ -29,10 +29,10 @@ import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
|
||||
|
||||
@Configuration
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.client;
|
||||
package org.springframework.security.kerberos.client;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@@ -29,11 +29,11 @@ import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.extensions.kerberos.web.ResponseHeaderSettingKerberosAuthenticationSuccessHandler;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.kerberos.web.ResponseHeaderSettingKerberosAuthenticationSuccessHandler;
|
||||
import org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
|
||||
|
||||
@Configuration
|
||||
@@ -13,9 +13,9 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.client.docs;
|
||||
package org.springframework.security.kerberos.client.docs;
|
||||
|
||||
import org.springframework.security.extensions.kerberos.client.KerberosRestTemplate;
|
||||
import org.springframework.security.kerberos.client.KerberosRestTemplate;
|
||||
|
||||
public class KerberosRestTemplateConfig {
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos;
|
||||
package org.springframework.security.kerberos;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos;
|
||||
package org.springframework.security.kerberos;
|
||||
|
||||
import org.springframework.security.authentication.AuthenticationProvider;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.security.extensions.kerberos;
|
||||
package org.springframework.security.kerberos;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos;
|
||||
package org.springframework.security.kerberos;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
@@ -25,8 +25,8 @@ import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsChecker;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.extensions.kerberos.KerberosTicketValidator.KerberosTicketValidation;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.kerberos.KerberosTicketValidator.KerberosTicketValidation;
|
||||
import org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos;
|
||||
package org.springframework.security.kerberos;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.security.PrivilegedActionException;
|
||||
@@ -29,8 +29,8 @@ import org.springframework.security.authentication.AbstractAuthenticationToken;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.crypto.codec.Base64;
|
||||
import org.springframework.security.extensions.kerberos.KerberosTicketValidator.KerberosTicketValidation;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.kerberos.KerberosTicketValidator.KerberosTicketValidation;
|
||||
import org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
|
||||
/**
|
||||
* <p>Holds the Kerberos/SPNEGO token for requesting a kerberized service and is
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos;
|
||||
package org.springframework.security.kerberos;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos;
|
||||
package org.springframework.security.kerberos;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos;
|
||||
package org.springframework.security.kerberos;
|
||||
|
||||
import java.security.Principal;
|
||||
import java.security.PrivilegedActionException;
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.web;
|
||||
package org.springframework.security.kerberos.web;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -22,7 +22,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.extensions.kerberos.KerberosServiceRequestToken;
|
||||
import org.springframework.security.kerberos.KerberosServiceRequestToken;
|
||||
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
||||
|
||||
/**
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.web;
|
||||
package org.springframework.security.kerberos.web;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -31,8 +31,8 @@ import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.security.crypto.codec.Base64;
|
||||
import org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.KerberosServiceRequestToken;
|
||||
import org.springframework.security.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.KerberosServiceRequestToken;
|
||||
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
|
||||
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
||||
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
|
||||
@@ -59,10 +59,10 @@ import org.springframework.web.filter.GenericFilterBean;
|
||||
* <sec:custom-filter ref="spnegoAuthenticationProcessingFilter" position="BASIC_AUTH_FILTER" />
|
||||
* </sec:http>
|
||||
*
|
||||
* <bean id="spnegoEntryPoint" class="org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint" />
|
||||
* <bean id="spnegoEntryPoint" class="org.springframework.security.kerberos.web.SpnegoEntryPoint" />
|
||||
*
|
||||
* <bean id="spnegoAuthenticationProcessingFilter"
|
||||
* class="org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter">
|
||||
* class="org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter">
|
||||
* <property name="authenticationManager" ref="authenticationManager" />
|
||||
* </bean>
|
||||
*
|
||||
@@ -71,9 +71,9 @@ import org.springframework.web.filter.GenericFilterBean;
|
||||
* </sec:authentication-manager>
|
||||
*
|
||||
* <bean id="kerberosServiceAuthenticationProvider"
|
||||
* class="org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider">
|
||||
* class="org.springframework.security.kerberos.KerberosServiceAuthenticationProvider">
|
||||
* <property name="ticketValidator">
|
||||
* <bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator">
|
||||
* <bean class="org.springframework.security.kerberos.SunJaasKerberosTicketValidator">
|
||||
* <property name="servicePrincipal" value="HTTP/web.springsource.com" />
|
||||
* <property name="keyTabLocation" value="classpath:http-java.keytab" />
|
||||
* </bean>
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.web;
|
||||
package org.springframework.security.kerberos.web;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
@@ -1,42 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- tag::snippetA[] -->
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:sec="http://www.springframework.org/schema/security"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xsi:schemaLocation="
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
|
||||
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
|
||||
|
||||
<sec:http use-expressions="true" >
|
||||
<sec:intercept-url pattern="/" access="permitAll" />
|
||||
<sec:intercept-url pattern="/home" access="permitAll" />
|
||||
<sec:intercept-url pattern="/**" access="authenticated"/>
|
||||
</sec:http>
|
||||
|
||||
<sec:authentication-manager alias="authenticationManager">
|
||||
<sec:authentication-provider ref="kerberosAuthenticationProvider"/>
|
||||
</sec:authentication-manager>
|
||||
|
||||
<bean id="kerberosAuthenticationProvider"
|
||||
class="org.springframework.security.extensions.kerberos.KerberosAuthenticationProvider">
|
||||
<property name="kerberosClient">
|
||||
<bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosClient">
|
||||
<property name="debug" value="true"/>
|
||||
</bean>
|
||||
</property>
|
||||
<property name="userDetailsService" ref="dummyUserDetailsService"/>
|
||||
</bean>
|
||||
|
||||
<bean
|
||||
class="org.springframework.security.extensions.kerberos.GlobalSunJaasKerberosConfig">
|
||||
<property name="debug" value="true" />
|
||||
<property name="krbConfLocation" value="/path/to/krb5.ini"/>
|
||||
</bean>
|
||||
|
||||
<bean id="dummyUserDetailsService"
|
||||
class="org.springframework.security.extensions.kerberos.sample.DummyUserDetailsService" />
|
||||
|
||||
</beans>
|
||||
<!-- end::snippetA[] -->
|
||||
@@ -1,63 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- tag::snippetA[] -->
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:sec="http://www.springframework.org/schema/security"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
|
||||
|
||||
<sec:http entry-point-ref="spnegoEntryPoint" use-expressions="true" >
|
||||
<sec:intercept-url pattern="/" access="permitAll" />
|
||||
<sec:intercept-url pattern="/home" access="permitAll" />
|
||||
<sec:intercept-url pattern="/login" access="permitAll" />
|
||||
<sec:intercept-url pattern="/**" access="authenticated"/>
|
||||
<sec:form-login login-page="/login" />
|
||||
<sec:custom-filter ref="spnegoAuthenticationProcessingFilter"
|
||||
before="BASIC_AUTH_FILTER" />
|
||||
</sec:http>
|
||||
|
||||
<sec:authentication-manager alias="authenticationManager">
|
||||
<sec:authentication-provider ref="kerberosAuthenticationProvider" />
|
||||
<sec:authentication-provider ref="kerberosServiceAuthenticationProvider" />
|
||||
</sec:authentication-manager>
|
||||
|
||||
<bean id="kerberosAuthenticationProvider"
|
||||
class="org.springframework.security.extensions.kerberos.KerberosAuthenticationProvider">
|
||||
<property name="userDetailsService" ref="dummyUserDetailsService"/>
|
||||
<property name="kerberosClient">
|
||||
<bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosClient">
|
||||
<property name="debug" value="true"/>
|
||||
</bean>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="spnegoEntryPoint"
|
||||
class="org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint" >
|
||||
<constructor-arg value="/login" />
|
||||
</bean>
|
||||
|
||||
<bean id="spnegoAuthenticationProcessingFilter"
|
||||
class="org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter">
|
||||
<property name="authenticationManager" ref="authenticationManager" />
|
||||
</bean>
|
||||
|
||||
<bean id="kerberosServiceAuthenticationProvider"
|
||||
class="org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider">
|
||||
<property name="ticketValidator">
|
||||
<bean
|
||||
class="org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator">
|
||||
<property name="servicePrincipal" value="${app.service-principal}" />
|
||||
<property name="keyTabLocation" value="${app.keytab-location}" />
|
||||
<property name="debug" value="true" />
|
||||
</bean>
|
||||
</property>
|
||||
<property name="userDetailsService" ref="dummyUserDetailsService" />
|
||||
</bean>
|
||||
|
||||
<bean id="dummyUserDetailsService"
|
||||
class="org.springframework.security.extensions.kerberos.docs.DummyUserDetailsService" />
|
||||
|
||||
</beans>
|
||||
<!-- end::snippetA[] -->
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos;
|
||||
package org.springframework.security.kerberos;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
@@ -29,6 +29,8 @@ import org.springframework.security.core.authority.AuthorityUtils;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.kerberos.KerberosAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.KerberosClient;
|
||||
|
||||
/**
|
||||
* Test class for {@link KerberosAuthenticationProvider}
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos;
|
||||
package org.springframework.security.kerberos;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
@@ -34,7 +34,10 @@ import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.security.extensions.kerberos.KerberosTicketValidator.KerberosTicketValidation;
|
||||
import org.springframework.security.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.KerberosServiceRequestToken;
|
||||
import org.springframework.security.kerberos.KerberosTicketValidator;
|
||||
import org.springframework.security.kerberos.KerberosTicketValidator.KerberosTicketValidation;
|
||||
|
||||
/**
|
||||
* Test class for {@link KerberosServiceAuthenticationProvider}
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.docs;
|
||||
package org.springframework.security.kerberos.docs;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -21,8 +21,8 @@ import org.springframework.security.config.annotation.authentication.builders.Au
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
|
||||
import org.springframework.security.extensions.kerberos.KerberosAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.SunJaasKerberosClient;
|
||||
import org.springframework.security.kerberos.KerberosAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.SunJaasKerberosClient;
|
||||
|
||||
//tag::snippetA[]
|
||||
@Configuration
|
||||
@@ -20,9 +20,9 @@
|
||||
</sec:authentication-manager>
|
||||
|
||||
<bean id="kerberosAuthenticationProvider"
|
||||
class="org.springframework.security.extensions.kerberos.KerberosAuthenticationProvider">
|
||||
class="org.springframework.security.kerberos.KerberosAuthenticationProvider">
|
||||
<property name="kerberosClient">
|
||||
<bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosClient">
|
||||
<bean class="org.springframework.security.kerberos.SunJaasKerberosClient">
|
||||
<property name="debug" value="true"/>
|
||||
</bean>
|
||||
</property>
|
||||
@@ -30,13 +30,13 @@
|
||||
</bean>
|
||||
|
||||
<bean
|
||||
class="org.springframework.security.extensions.kerberos.GlobalSunJaasKerberosConfig">
|
||||
class="org.springframework.security.kerberos.GlobalSunJaasKerberosConfig">
|
||||
<property name="debug" value="true" />
|
||||
<property name="krbConfLocation" value="/path/to/krb5.ini"/>
|
||||
</bean>
|
||||
|
||||
<bean id="dummyUserDetailsService"
|
||||
class="org.springframework.security.extensions.kerberos.sample.DummyUserDetailsService" />
|
||||
class="org.springframework.security.kerberos.sample.DummyUserDetailsService" />
|
||||
|
||||
</beans>
|
||||
<!-- end::snippetA[] -->
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.docs;
|
||||
package org.springframework.security.kerberos.docs;
|
||||
|
||||
import org.springframework.security.core.authority.AuthorityUtils;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.docs;
|
||||
package org.springframework.security.kerberos.docs;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -23,12 +23,12 @@ import org.springframework.security.config.annotation.authentication.builders.Au
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
|
||||
import org.springframework.security.extensions.kerberos.KerberosAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.SunJaasKerberosClient;
|
||||
import org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.kerberos.KerberosAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.SunJaasKerberosClient;
|
||||
import org.springframework.security.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
|
||||
|
||||
//tag::snippetA[]
|
||||
@@ -24,30 +24,30 @@
|
||||
</sec:authentication-manager>
|
||||
|
||||
<bean id="kerberosAuthenticationProvider"
|
||||
class="org.springframework.security.extensions.kerberos.KerberosAuthenticationProvider">
|
||||
class="org.springframework.security.kerberos.KerberosAuthenticationProvider">
|
||||
<property name="userDetailsService" ref="dummyUserDetailsService"/>
|
||||
<property name="kerberosClient">
|
||||
<bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosClient">
|
||||
<bean class="org.springframework.security.kerberos.SunJaasKerberosClient">
|
||||
<property name="debug" value="true"/>
|
||||
</bean>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="spnegoEntryPoint"
|
||||
class="org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint" >
|
||||
class="org.springframework.security.kerberos.web.SpnegoEntryPoint" >
|
||||
<constructor-arg value="/login" />
|
||||
</bean>
|
||||
|
||||
<bean id="spnegoAuthenticationProcessingFilter"
|
||||
class="org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter">
|
||||
class="org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter">
|
||||
<property name="authenticationManager" ref="authenticationManager" />
|
||||
</bean>
|
||||
|
||||
<bean id="kerberosServiceAuthenticationProvider"
|
||||
class="org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider">
|
||||
class="org.springframework.security.kerberos.KerberosServiceAuthenticationProvider">
|
||||
<property name="ticketValidator">
|
||||
<bean
|
||||
class="org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator">
|
||||
class="org.springframework.security.kerberos.SunJaasKerberosTicketValidator">
|
||||
<property name="servicePrincipal" value="${app.service-principal}" />
|
||||
<property name="keyTabLocation" value="${app.keytab-location}" />
|
||||
<property name="debug" value="true" />
|
||||
@@ -57,7 +57,7 @@
|
||||
</bean>
|
||||
|
||||
<bean id="dummyUserDetailsService"
|
||||
class="org.springframework.security.extensions.kerberos.docs.DummyUserDetailsService" />
|
||||
class="org.springframework.security.kerberos.docs.DummyUserDetailsService" />
|
||||
|
||||
</beans>
|
||||
<!-- end::snippetA[] -->
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.web;
|
||||
package org.springframework.security.kerberos.web;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Matchers.any;
|
||||
@@ -43,8 +43,9 @@ import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.security.core.authority.AuthorityUtils;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.security.extensions.kerberos.KerberosServiceRequestToken;
|
||||
import org.springframework.security.extensions.kerberos.KerberosTicketValidator.KerberosTicketValidation;
|
||||
import org.springframework.security.kerberos.KerberosServiceRequestToken;
|
||||
import org.springframework.security.kerberos.KerberosTicketValidator.KerberosTicketValidation;
|
||||
import org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
|
||||
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
||||
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
|
||||
@@ -13,9 +13,10 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.web;
|
||||
package org.springframework.security.kerberos.web;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.security.kerberos.web.SpnegoEntryPoint;
|
||||
|
||||
import javax.servlet.RequestDispatcher;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.security.extensions.kerberos.client.KerberosRestTemplate;
|
||||
import org.springframework.security.kerberos.client.KerberosRestTemplate;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class)
|
||||
|
||||
@@ -6,8 +6,8 @@ import org.springframework.security.config.annotation.authentication.builders.Au
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
|
||||
import org.springframework.security.extensions.kerberos.KerberosAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.SunJaasKerberosClient;
|
||||
import org.springframework.security.kerberos.KerberosAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.SunJaasKerberosClient;
|
||||
|
||||
import demo.DummyUserDetailsService;
|
||||
|
||||
|
||||
@@ -23,30 +23,30 @@
|
||||
</sec:authentication-manager>
|
||||
|
||||
<bean id="kerberosAuthenticationProvider"
|
||||
class="org.springframework.security.extensions.kerberos.KerberosAuthenticationProvider">
|
||||
class="org.springframework.security.kerberos.KerberosAuthenticationProvider">
|
||||
<property name="userDetailsService" ref="dummyUserDetailsService"/>
|
||||
<property name="kerberosClient">
|
||||
<bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosClient">
|
||||
<bean class="org.springframework.security.kerberos.SunJaasKerberosClient">
|
||||
<property name="debug" value="true"/>
|
||||
</bean>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="spnegoEntryPoint"
|
||||
class="org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint" >
|
||||
class="org.springframework.security.kerberos.web.SpnegoEntryPoint" >
|
||||
<constructor-arg value="/login" />
|
||||
</bean>
|
||||
|
||||
<bean id="spnegoAuthenticationProcessingFilter"
|
||||
class="org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter">
|
||||
class="org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter">
|
||||
<property name="authenticationManager" ref="authenticationManager" />
|
||||
</bean>
|
||||
|
||||
<bean id="kerberosServiceAuthenticationProvider"
|
||||
class="org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider">
|
||||
class="org.springframework.security.kerberos.KerberosServiceAuthenticationProvider">
|
||||
<property name="ticketValidator">
|
||||
<bean
|
||||
class="org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator">
|
||||
class="org.springframework.security.kerberos.SunJaasKerberosTicketValidator">
|
||||
<property name="servicePrincipal" value="${app.service-principal}" />
|
||||
<property name="keyTabLocation" value="${app.keytab-location}" />
|
||||
<property name="debug" value="true" />
|
||||
|
||||
@@ -9,12 +9,12 @@ import org.springframework.security.config.annotation.authentication.builders.Au
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
|
||||
import org.springframework.security.extensions.kerberos.KerberosAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.SunJaasKerberosClient;
|
||||
import org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.kerberos.KerberosAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.SunJaasKerberosClient;
|
||||
import org.springframework.security.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
|
||||
|
||||
import demo.DummyUserDetailsService;
|
||||
|
||||
@@ -9,12 +9,12 @@ import org.springframework.security.config.annotation.authentication.builders.Au
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
|
||||
import org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.extensions.kerberos.client.KerberosLdapContextSource;
|
||||
import org.springframework.security.extensions.kerberos.client.config.SunJaasKrb5LoginConfig;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.kerberos.KerberosServiceAuthenticationProvider;
|
||||
import org.springframework.security.kerberos.SunJaasKerberosTicketValidator;
|
||||
import org.springframework.security.kerberos.client.KerberosLdapContextSource;
|
||||
import org.springframework.security.kerberos.client.config.SunJaasKrb5LoginConfig;
|
||||
import org.springframework.security.kerberos.web.SpnegoAuthenticationProcessingFilter;
|
||||
import org.springframework.security.kerberos.web.SpnegoEntryPoint;
|
||||
import org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider;
|
||||
import org.springframework.security.ldap.search.FilterBasedLdapUserSearch;
|
||||
import org.springframework.security.ldap.userdetails.LdapUserDetailsMapper;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.test;
|
||||
package org.springframework.security.kerberos.test;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.test;
|
||||
package org.springframework.security.kerberos.test;
|
||||
|
||||
import org.apache.commons.io.Charsets;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
@@ -13,14 +13,14 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.security.extensions.kerberos.test;
|
||||
package org.springframework.security.kerberos.test;
|
||||
|
||||
import org.apache.directory.server.kerberos.shared.keytab.Keytab;
|
||||
import org.apache.directory.server.kerberos.shared.keytab.KeytabEntry;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.springframework.security.extensions.kerberos.test.KerberosSecurityTestcase;
|
||||
import org.springframework.security.extensions.kerberos.test.MiniKdc;
|
||||
import org.springframework.security.kerberos.test.KerberosSecurityTestcase;
|
||||
import org.springframework.security.kerberos.test.MiniKdc;
|
||||
|
||||
import javax.security.auth.Subject;
|
||||
import javax.security.auth.kerberos.KerberosPrincipal;
|
||||
Reference in New Issue
Block a user