不清楚Oauth2.0 的 可以查看我前几篇博文

2018.4.8 补充 我出现这个原因:是我在资源服务器使用了 如下图所示

Principal Oauth2.0 提供的获取用户信息的方法 使其找到相关信息

配置Oauth2.0 认证服务端的时候UserDetails 配置的时候 继承的实体类

aaarticlea/png;base64,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" alt="" />

User 代码上 经个人测试必须要有这几个实体类 这里面的信息是Principal 方法里所用到的信息 必须有的 如果没有会报错:Principal must not be null

public class User extends SupplyUser {
private String firstName;
private String lastName;
private String email;
private String imageUrl;
private Instant createTime;
@JsonIgnore
private Instant updateTime;
@JsonIgnore
private Set<Role> roles = new HashSet<>();
private Set<GrantedAuthority> authorities = new HashSet<>(); public Set<GrantedAuthority> getAuthorities() {
Set<GrantedAuthority> authorities = new HashSet<>();
for (Role role : this.roles) {
for (Authority authority : role.getAuthorities()) {
authorities.add(new SimpleGrantedAuthority(authority.getValue()));
}
}
return authorities;
}

以上方法都不缺的话 只能使用以下的方法了,但笔者不建议使用删除包的方法

Zuul 为springCloud 微服务框架 单独可以使用 非常简单 可以上网查证

此文只说明如何解决Oauth2.0 和Zuul 包 的冲突

需求:新建一个Oauth2.0 项目 需要在此基础上进行网关分发 选用的框架为Zuul

遇到的问题 是 一旦导入zuul 的所需包

  <dependency>
<groupId>org.springframework.cloud</groupId> ------ 》》 冲突
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR3</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

运行之后 请求分发接口 就报错信息

java.lang.IllegalArgumentException: Principal must not be null
at org.springframework.util.Assert.notNull(Assert.java:134) ~[spring-core-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.boot.actuate.audit.AuditEvent.<init>(AuditEvent.java:88) ~[spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.boot.actuate.audit.AuditEvent.<init>(AuditEvent.java:64) ~[spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.boot.actuate.security.AuthenticationAuditListener.onAuthenticationSuccessEvent(AuthenticationAuditListener.java:92) ~[spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.boot.actuate.security.AuthenticationAuditListener.onApplicationEvent(AuthenticationAuditListener.java:72) ~[spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.boot.actuate.security.AuthenticationAuditListener.onApplicationEvent(AuthenticationAuditListener.java:35) ~[spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.security.authentication.DefaultAuthenticationEventPublisher.publishAuthenticationSuccess(DefaultAuthenticationEventPublisher.java:99) ~[spring-security-core-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:156) ~[spring-security-oauth2-2.0.14.RELEASE.jar:na]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106) ~[spring-boot-actuator-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) [tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) [tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) [tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) [tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455) [tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.15.jar:8.5.15]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_91]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.15.jar:8.5.15]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]

原因 是 一片老外的博文  给出了解决办法及原因 限于英语有限 大家可以自己查看一下 1.地址:https://github.com/spring-projects/spring-boot/issues/6447  2. https://stackoverflow.com/questions/38958004/spring-boot-1-4-principal-must-not-be-null-exception

翻译过来大体是:

当你同时拥有Spring Boot Actuator和Spring Security时,

试图使用SecurityContextHolder.getContext().getAuthentication()(或@AuthenticationPrincipal在方法签名中使用)的基于UriTemplate的路由将获得一个null值。

也就是说Oauth2.0 导入的包和Zuul导入的包下的子包spring-boot-actuator (注意这个包并没有在ZUUL pom中包 中所体现)同时调用 发生冲突 将这个包移除问题就能解决了

具体解决方法 1.:在zuul 下 添加如下exclusions 标签移除 即可

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-actuator</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>

第二种解决办法 是开始的时候并不知到spring-boot-actuator 为zuul 下的包, 那如何找到他  我使用的springboot +maven 框架 工具是IDEA

点击右边栏Maven Projects--》show Dependence

变成如下界面 可以看出spring-boot-actuator   属于springZuul 下的子包

找到spring-boot-actuator  右键删除 在点击右下角的Import

删除后 pom中依然是这样

 <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-actuator</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions> </dependency>

补充  :  以上这种方法不够科学  后期可能会带来许多麻烦

我最近 将  ZUUL及EUREKA 注册  和OAUTH2.0  分开三个小项目  写 可以避免 许多麻烦  也增加代码  的规范化

还有就是spring-cloud  已经提供 OAuth2.0 的包 也可以避免 相互冲突

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

后期我会写个 规范 springCloud 和Oauth2.0 整合 及Oauth2.0 资源服务器配置  代码DEMO

Oauth2.0 整合springCloud的Zuul 解决关键BUG 报错信息:Principal must not be null的更多相关文章

  1. [SharePoint Online]SharePoint Designer无法打开世纪互联版sp online站点得解决方法,报错信息:请安装更新后再重新打开

    现象描述: 装了个x64版SharePoint designer 2013, 没有装SP1,在打开国际版得office 365 online得时候完全没有问题,但是在打开世纪互联版得时候就打不开,让安 ...

  2. 解决maven install报错信息(Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile )

    Maven install失败 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (d ...

  3. 解决kylin查询报错:org.apache.kylin.rest.exception.InternalErrorException

    报错信息: -- ::, ERROR [Query 12e9c054-760c---b1f06724c9b6-] service.QueryService: : Exception when exec ...

  4. 解决vcenter 6.0 vcsa安装插件第二个的时候报错的问题

    解决vcenter 6.0 vcsa安装插件第二个的时候报错的问题 需要打一下windows 的Microsoft v C++ 2013的2个补丁就可以正常运行了. 然后在后续安装过程中,到达最后一步 ...

  5. Django数据迁移时(或者新建模型时)报错:Did you install mysqlclient,解决后又报错:mysqlclient 1.3.13 or newer is required;you have 0.9.3

    报错信息如下: 解决方法一: 给项目根目录下mysite应用下的__init__.py文件加入如下代码: 运行又报错: 报错信息是:  mysqlclient版本太低 点击上图框中的链接进入到pyth ...

  6. 解决Hue/hiveserver2报错:java.io.IOException: Job status not available

    sql是:select count(distinct col) from db.table; 排查过程中遇到过几个不同的报错: 1. beeline -u jdbc:hive2://0.0.0.0:1 ...

  7. python2 + selenium + eclipse 中,配置好runserver 127.0.0.1:9000,运行的时候,报错

    python2 + selenium + eclipse 中,配置好runserver 127.0.0.1:9000,运行的时候,报错,如图: 原因:       google发现是WSGI appl ...

  8. Hadoop0.20.203.0在关机重启后,namenode启动报错(/dfs/name is in an inconsistent state)

    Hadoop0.20.203.0在关机重启后,namenode启动报错: 2011-10-21 05:22:20,504 INFO org.apache.hadoop.hdfs.server.comm ...

  9. 怎样解决Script error报错问题

    如果脚本网址与网页网址不在同一个域(比如使用了 CDN), 那如果这个脚本执行报错了, 就会报:Script error. 由于同源策略, 浏览器禁止向外部脚本泄漏信息, 因此不会提供完整的报错信息, ...

随机推荐

  1. 基础知识 一个工具给win7 win10的同学 或者MAC 可以跳过

  2. 130. Surrounded Regions (Graph; DFS)

    Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is captured ...

  3. Laravel trait 使用心得

    trait 是在PHP5.4中为了方便代码复用的一种实现方式,但目前我在看的的PHP项目中较少看的有程序员去主动使用这个实现方式,在laravel中有很多 trait 的使用,关于trait 在 la ...

  4. [Selenium]Turn Page By Scroll Bar

    Description: Need to turn page by operating scroll bar and find out the element in the current page. ...

  5. Java Thread系列(十)Future 模式

    Java Thread系列(十)Future 模式 Future 模式适合在处理很耗时的业务逻辑时进行使用,可以有效的减少系统的响应时间,提高系统的吞吐量. 一.Future 模式核心思想 如下的请求 ...

  6. android屏幕页面实现滚动,页面跳转

    在 在LinearLayout外面包一层ScrollView即可,如下代码 Apidemo 中关于如何使用ScrollView说明,请参考:<ScrollView xmlns:android=& ...

  7. 04 Python入门学习-流程控制(if else elif while for)

    一:流程控制if 语法一: if 条件: code1 code2 code3 ... age = 20 height = 170 weight = 60 sex = 'female' is_beaut ...

  8. UVa 10829 L-Gap Substrings (后缀数组+rmq)

    题意:给定上一个串,问你多少种UVU这一种形式的串,其中U不为空并且V的长度给定了. 析:枚举 U 的长度L,那么U一定是经过 0 L 2L 3L .... 其中的一个,所以求两个长度反lcp,一个向 ...

  9. thinkphp 调用wsdl接口实例化SoapClient抛出异常

    异常:Message:SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://*****?wsdl' : failed to load externa ...

  10. B-spline Curves 学习之B样条曲线定义(4)

    B-spline Curves: Definition 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. (原来博客网址:h ...