[Spring boot + Spring Security] Security with Digest Authentication

1. Prepare Tools

  • IDE: Netbean 8.2
  • JDK: 1.8
  • Maven: 3.5.0 ## 2. Target Build project thỏa mãn các yêu cầu sau:
  • Sử dụng spring boot + spring security
  • Sử dụng digest authentication để bảo mật tài nguyên qua http
  • Sử dụng annotation configuration thay cho xml configuration.
    

    3. Maven dependency

        <!-- Core starter, including auto-configuration support, logging and YAML -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- Starter for using Spring Security -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <!-- Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    

    4. Project setup and description

1. Basic Project

https://viblo.asia/p/spring-boot-spring-security-basic-project-1VgZvEmpKAw

2. Digest Authentication

Tương tự như Basic Authentication, Digest Authentication cũng là một tiêu chuẩn bảo vệ tài nguyên qua http. Khác với Basic, Digest bảo mật hơn bằng cách ngăn chặn được việc decode chuỗi Authorization trên header của bản tin http. Cụ thể quá trình xác thực như thế nào thì mọi người google nhé.

3. DigestAuthenticationFilter

Tương tự như Basic Authentication, việc xử lý digest authen cũng được thông qua một filter. Sping cũng hỗ trợ luôn một class làm chức năng trên DigestAuthenticationFilter

    DigestAuthenticationFilter digestAuthenticationFilter() throws Exception {
        DigestAuthenticationFilter digestAuthenticationFilter = new DigestAuthenticationFilter();
        digestAuthenticationFilter.setUserDetailsService(userDetailsService);
        digestAuthenticationFilter.setAuthenticationEntryPoint(digestEntryPoint());
        return digestAuthenticationFilter;
    }

3. DigestAuthenticationEntryPoint

Tương tự Basic Authentication, Digest cũng cần một cái entryEndpoint để xây dựng cấu trúc header response lại client cho đúng flow. Spring cũng hỗ trợ luôn một class làm việc này

    @Bean
    DigestAuthenticationEntryPoint digestEntryPoint() { 
        DigestAuthenticationEntryPoint dAuth = new DigestAuthenticationEntryPoint();
        dAuth.setRealmName("soithatha");
        return dAuth;
    }

Việc của chúng ta là dùng lại.

4. SecurityConfig

Add thêm filter vào trong cấu hình httpsecurity

  http.addFilter(digestAuthenticationFilter()) 
                .exceptionHandling().authenticationEntryPoint(digestEntryPoint()) 
                .and()
                .authorizeRequests()
                .antMatchers("/login").permitAll() 
                .anyRequest().authenticated()

5. Demo


6. Full Source

spring-security-digest-authentication
http://bit.ly/2DcvZGP

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

xoandaica

14 bài viết.
6 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
3 0
Bài viết này sẽ hướng dẫn các bạn từng bước xây dựng một ứng dụng java sử dụng spring boot kết hợp với spring data jdbc để lưu trữ và nhận dữ liệu ...
xoandaica viết 6 tháng trước
3 0
White
2 0
1. Single Thread 1. Làm một việc tại một thời điểm Không giống như đa số các ngôn ngữ lập trình khác, javascript đơn giản là đơn luồng. Điều này ...
xoandaica viết 7 tháng trước
2 0
White
2 0
1. Prepare Tools IDE: Netbean 8.2 JDK: 1.8 Maven: 3.5.0 2. Target Build project thỏa mãn các yêu cầu sau: Sử dụng spring boot + spring ...
xoandaica viết 7 tháng trước
2 0
Bài viết liên quan
White
0 0
Trong bài viết này, một số hình ảnh hoặc nọi dung có thể bị thiếu do quá trình chế bản. Vui lòng xem nội dung ở blog gốc sau: (Link) (Link), chúng...
programmerit viết gần 4 năm trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
14 bài viết.
6 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!