在基于spring security oauth2搭建了认证授权中心之后,Spring security oauth2默认提供了授权页面,但较为简陋,于是提高用户体验,我们需要自定义授权页面,首先我们需要先了解授权的流程。
授权首先是通过get请求访问/oauth/authorize接口,并携带相关参数,例如:
org.springframework.security.oauth2.provider.endpoint.AuthorizationEndpoint中authorize()负责处理get请求的/oauth/authorize:
1 | (value = "/oauth/authorize") |
如果isApproved为false,则调用getUserApprovalPageResponse:
1 | private ModelAndView getUserApprovalPageResponse(Map<String, Object> model, |
这里: String userApprovalPage = "forward:/oauth/confirm_access"
即转发到/oauth/confirm_access
默认是由org.springframework.security.oauth2.provider.endpoint.WhitelabelApprovalEndpoint类处理/oauth/confirm_access请求,将用户引导到默认授权页(这里默认授权页是由代码渲染的html页面):
1 |
|
看到这里,我们就已经可以知道,想要自定义授权页,只需要替换掉默认的WhitelabelApprovalEndpoint即可。
- 引入thymeleaf依赖,在resource下创建templates文件夹,再在templates文件夹创建一个grant.html文件:
1 |
|
- 在
applicaiton.properties中配置thymeleaf:
1 | spring.thymeleaf.prefix=classpath:/templates/ |
- 创建处理
/oauth/confirm_access请求的controller覆盖默认的WhitelabelApprovalEndpoint:
1 |
|
至此,需要用户授权的/oauth/authorize请求将会跳转到自定义的授权页面,就完成了自定义授权页面的开发。