zoukankan      html  css  js  c++  java
  • springcloud系列六 整合security

    一 Eureka注册中心认证:

      Eureka自带了一个管理界面,如果不加密,所有人都可以进行访问这个地址,这样安全问题就来了,所以需要对其进行加密认证:

    那么该如何进行整合呢:

    1 在注册中心模块添加依赖:

       <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
            </dependency>

    2 yml文件配置:

    spring:
      security:
        user:
          name: admin
          password: admin

    3 启动服务再次登录尝试:

    之前是谷歌登录,所以换了一个浏览器,需要再登录,

    再次启动注册模块,就出现一堆错误:

    那么这个问题怎么解决呢:

    eureka:
      client:
        serviceUrl:
         defaultZone: http://admin:admin@127.0.0.1:8761/eureka/  #eureka注册中心地址

    在注册服务上加上这个,名字,密码就可以了吗?

    再启动还是报一堆错误,服务根本注册不进去:

     可以看到报错信息:

    com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

    百度查询:

    但是好像并没有解决啊:

    开启认证了,但是没有禁用CSRF

    新版本的spring-cloud2.0中: Spring Security默认开启了CSRF攻击防御

    CSRF会将微服务的注册也给过滤了,虽然不会影响注册中心,但是其他客户端是注册不了的

    解决方案:

    关闭csrf攻击:

    package com.cxy.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
    
    /***
     * @ClassName: WebSecurityConfig
     * @Description:
     * @Auther: 陈绪友
     * @Date: 2019/1/2820:34
     * @version : V1.0
     */
    @Configuration
    
    public class WebSecurityConfig {
        @EnableWebSecurity
        public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
            @Override
            protected void configure(HttpSecurity http) throws Exception {
                http.authorizeRequests().anyRequest().authenticated().and().httpBasic().and().csrf().disable();
            }
        }
    }

  • 相关阅读:
    dataTables分页实现两个前提
    centos 7 下 nginx 1.10.3 编译安装的方法
    redis 远程连接出错的解决办法
    Yii2事件驱动的运行机制
    Yii2项目高级模版 三个模块在同一个目录下的重定向配置
    PHP处理上传文件信息数组中的文件类型 正确获取
    PHP is_writeable 存在bug , 写一个自定函数 判断文件是否可写
    PHP面试题学习
    解决yii2 禁用layout时AppAsset不加载资源的问题
    如何在 Docker 容器中运行 Kali Linux 2.0
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/10331687.html
Copyright © 2011-2022 走看看