配置细节
今天在调试Authorization Server和Resource Server,一下配置细节耽误了一些时间,记录下来避免以后犯同样的错误。
首先是调试Resource Server时,Client可以登录Authorizaiton Server,但访问Resource Server时认证无法通过,反复跳转到登录页面。后来发现,Resource Server配置的认证服务器地址是http://localhost:9000,而在Client中配置的是http://127.0.0.1:9000,被认为是不匹配,所以无法通过认证。
第二个问题是在配置Scope时,在resource server中的配置如下:
.requestMatchers("/group/**").hasAuthority("SCOPE_group")
在scope的名称前需要增加SCOPE_,而在client中的配置是:
scope: message.read,message.write,group
如果在resource server中的配置中没有SCOPE_,则认证总是无法通过。
第三个问题是控制器中的RequestMap中的地址是否有“\”,如果有,那么在客户端的定义中也必须有,否则会出现404错误,比如,在resource server的控制器中定义:
@RequestMapping(value ="/messages/", method = RequestMethod.GET)
那么在客户端的配置文件中必须定义为:
message-uri: "http://127.0.0.1:8090/group/messages/"
如果写为:message-uri: "http://127.0.0.1:8090/group/messages",会出现404错误。