skyADMIN

spring security oauth2.0 登陆的尝试

oauth2.0是个啥不介绍了,自行Google,大概就是个允许用户用别的网站(e.g. Facebook github & 接地气的易班)上的信息去注册自己的网站/APP。

最近有点迷springboot,试试用springboot给本校易班写个小程序,尝试中,不清楚是否能完工。

spring security提供了很多东西,oauth2认证就是其中一项,所以只需要简单的配置,就可以实现。

有个官方教程挺不错的:https://spring.io/guides/tutorials/spring-boot-oauth2/

不过英语看得很心疼,我不嫌麻烦,汉语写一遍……

springboot项目我一般用maven去管理依赖,在pom文件中的dependency里写上spring-boot-starter-security和spring-security-oauth2以及基础的spring-boot-starter-web,like this:

272AF3A3-1EB2-4B9B-B65E-E644D3C98006

(spring-boot-starter-web隔得有点远,省略……)

然后在application.yml中配置一下。(把后缀从properties改成yml,因为yml格式的可读性更好)

官方教程中的配置信息如下:

034C6E57-14B0-4101-9702-9C81E1A95CEE

id和secret都是第三方开发者平台提供的,这里是spring官方在Facebook的开发者注册了一个应用获取到的id和secret,而我想做易班的,就去易班的开放平台上查找相关信息。

在o.yiban.cn上注册成为开发者,创建应用,然后点开应用详情即可看到自己的应用的id和secret,替换填写即可。

8DFD5FDE-AEC4-4262-A9CC-7C2AE49D10E4

再去文档里查阅一下相关接口:

9B8F0FE2-43BA-4BCF-922F-DE8445D439D2

替换掉uri,启动应用。结果发现出问题了,跳转到易班授权登陆界面的时候弹出错误提示e002,无效的客户端回调地址。

查看地址栏中的url,发现redirect_uri(回调地址?)的参数是localhost:8080/login。应该是一个默认的参数,but,我创建应用时选择的是轻应用,不能自己指定回调地址,而是有一个固定好的回调地址,尝试打redirect_uri发现配置里有两个相似的待选项,registered-redirect-uri和pre-established-redirect-uri,死马当活马医,都填上分配的回调地址,重启工程,发现仍是那个错误,Google了半天在stackoverflow里找到了解决方法,再填上一个use-current-uri:false,问题解决,启动工程后再浏览器中输入localhost:8080自动跳转到易班授权登陆页面。

附上配置信息截图:

27241FC1-02F2-4F80-AE32-3FDFFF8925D4

码字很辛苦,转载请注明来自环宇博客《spring security oauth2.0 登陆的尝试》

评论