Skip to content

foured/Spring-security-HTTP-authentication

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

Spring-security-HTTP-authentication

The simpliest spring security HTTP authentication, no csrf. (for android check okhttp branch)

Описание

При создании клиента программа получает куки файл с кодом для авторизации, который дальше добавляется во все запросы. Объект SpringSecurityClient сериализуемый.

Подготовка

Сначала надо выкчить csrf в проекте сервера:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    return http.csrf(AbstractHttpConfigurer::disable)
            .authorizeHttpRequests(auth -> auth.requestMatchers("/activities/**", "/operations/**").authenticated())
            .formLogin(AbstractAuthenticationFilterConfigurer::permitAll)
            .build();
}

Добавьте зависимость в проект клиента Maven

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>

Gradle

implementation 'org.apache.httpcomponents:httpclient:4.5'

Использование

Создание объекта

// (link, username, password)
SpringSecurityClient client = new SpringSecurityClient("http://localhost:8080/login", "admin", "admin");

Get с подставлением cookies без асинхронности

String link = "some link"
client.get(link);

Post с подставлением cookies без асинхронности

String link = "some link"

List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("value1", "value1"));
params.add(new BasicNameValuePair("value2", "value2"));

client.post(link, params);

Get без подставлением cookies без асинхронности

String link = "some link"
client.get_nc(link);

Post без подставлением cookies без асинхронности

String link = "some link"

List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("value1", "value1"));
params.add(new BasicNameValuePair("value2", "value2"));

client.post_nc(link, params);

Get с подставлением своих cookies без асинхронности

BasicCookieStore cookieStore = new BasicCookieStore();
// создание куки 

String link = "some link"
client.get(link, cookieStore)

Post с подставлением своих cookies без асинхронности

BasicCookieStore cookieStore = new BasicCookieStore();
// создание куки 

String link = "some link"

List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("value1", "value1"));
params.add(new BasicNameValuePair("value2", "value2"));

client.post_nc(link, params);

Get с подставлением cookies, асинхронный

String link = "some link"

CompletableFuture<String> result = client.get_async(link);

result.thenAccept(res -> {
    System.out.println(res);
});

Post с подставлением cookies, асинхронный

String link = "some link"

List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("value1", "value1"));
params.add(new BasicNameValuePair("value2", "value2"));

CompletableFuture<String> result = client.post_async(link, params);

result.thenAccept(res -> {
    System.out.println(res);
});

Get без подставлением cookies, асинхронный

String link = "some link"

CompletableFuture<String> result = client.get_nc_async(link);

result.thenAccept(res -> {
    System.out.println(res);
});

Post без подставлением cookies, асинхронный

String link = "some link"

List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("value1", "value1"));
params.add(new BasicNameValuePair("value2", "value2"));

CompletableFuture<String> result = client.post_nc_async(link, params);

result.thenAccept(res -> {
    System.out.println(res);
});

Get с подставлением своих cookies, асинхронный

BasicCookieStore cookieStore = new BasicCookieStore();
// создание куки 

String link = "some link"
CompletableFuture<String> result = client.get_async(link, cookieStore);

result.thenAccept(res -> {
    System.out.println(res);
});

Post с подставлением своих cookies, асинхронный

BasicCookieStore cookieStore = new BasicCookieStore();
// создание куки 

String link = "some link"
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("value1", "value1"));
params.add(new BasicNameValuePair("value2", "value2"));

CompletableFuture<String> result = client.post_async(link, params, cookieStore);

result.thenAccept(res -> {
    System.out.println(res);
});

About

The simpliest spring security HTTP authentication, no csfr.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages