探索flutter框架开发的app在移动应用市场的潜力与挑战
655
2022-10-07
10-微信OAuth2授权登录
本文DEMO:wechat 分支。
环境准备
内网穿透
打开后只需要填写域名,不要带协议头。例如回调是 * 用来从{@link HttpServletRequest}中检索封装成OAuth2请求对象{@link OAuth2AuthorizationRequest} * * @param clientRegistrationRepository the client registration repository * @return DefaultOAuth2AuthorizationRequestResolver */ private OAuth2AuthorizationRequestResolver oAuth2AuthorizationRequestResolver(ClientRegistrationRepository clientRegistrationRepository) { DefaultOAuth2AuthorizationRequestResolver resolver = new DefaultOAuth2AuthorizationRequestResolver(clientRegistrationRepository, OAuth2AuthorizationRequestRedirectFilter.DEFAULT_AUTHORIZATION_REQUEST_BASE_URI); // 设置自定义解析 resolver.setAuthorizationRequestCustomizer(new WechatOAuth2AuthorizationRequestCustomizer(WECHAT_PROVIDER)::customize); return resolver; }
获取token踩坑
还有一个小坑,Spring Security token响应对象OAuth2AccessTokenResponse中的OAuth2AccessToken对象要求必须有类型属性TokenType(Access Token Types)。OAuth2AccessTokenResponseHttpMessageConverter的DefaultMapOAuth2AccessTokenResponseConverter负责OAuth2AccessTokenResponse的组装,我们可以改造一下,最终自定义的OAuth2AccessTokenResponseClient就可以满足需求了。
Security提供的代理有一些兼容问题,我重写了该代理,具体的代码参考本文对应的DEMO。
配置
上面的自定义逻辑需要在HttpSecurity.oauth2Login中配置才能生效,以下代码配置了授权端点、token端点、用户信息端点的自定义配置。
/*** * 自定义相关的配置。 * * @param * @return SecurityFilterChain * @throws Exception exception */ @Bean SecurityFilterChain customSecurityFilterChain(HttpSecurity ClientRegistrationRepository clientRegistrationRepository) throws Exception { OAuth2UserService
这些配置项是如何配置生效的呢?下一篇我们接着来深入研究。
测试
http://<内网穿透域名>/oauth2/authorization/wechat
就可以看到结果了,多调试几遍,熟悉熟悉流程。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~