1 Star 3 Fork 1

徐晓伟 / spring-boot-starter-wechat-miniprogram

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 37.61 KB
一键复制 编辑 原始数据 按行查看 历史
徐晓伟 提交于 2023-12-11 11:02 . :memo:删除极狐,使用 framagit

spring-boot-starter-wechat-miniprogram

支持 OAuth 2.1 JWT 授权的微信小程序开发组件

License-Anti Link-996 QQ群

为简化开发工作、提高生产率、解决常见问题而生

分支

  • main
    • 支持 JDK 8、11
  • next
    • 支持 JDK 17

使用文档

其他 Spring Boot Starter 项目

发布

更新日志

代码格式规范 spring-javaformat

使用方法

  1. 依赖引入

<dependencies>
    <!-- OAuth 2.1 依赖 -->
    <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-oauth2-authorization-server -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-oauth2-authorization-server</artifactId>
        <version>0.4.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/cn.com.xuxiaowei.boot/spring-boot-starter-wechat-miniprogram -->
    <dependency>
        <groupId>cn.com.xuxiaowei.boot</groupId>
        <artifactId>spring-boot-starter-wechat-miniprogram</artifactId>
        <version>0.0.2-alpha.1</version>
    </dependency>
</dependencies>
  1. 项目配置
package cloud.xuxiaowei.passport.configuration;

// import cloud.xuxiaowei.passport.handler.AccessTokenAuthenticationFailureHandlerImpl;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.server.authorization.authentication.OAuth2WeChatMiniProgramAuthenticationProvider;
import org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer;
import org.springframework.security.oauth2.server.authorization.web.authentication.*;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.util.matcher.RequestMatcher;

import java.util.Arrays;

/**
 * Spring Security 配置
 * <p>
 * 详细使用说明参见:
 * <p>
 * <a href=
 * "https://gitee.com/xuxiaowei-cloud/xuxiaowei-cloud/blob/main/passport/src/main/java/cloud/xuxiaowei/passport/configuration/AuthorizationServerConfiguration.java">Gitee</a>
 * <p>
 * <a href=
 * "https://github.com/xuxiaowei-cloud/xuxiaowei-cloud/blob/main/passport/src/main/java/cloud/xuxiaowei/passport/configuration/AuthorizationServerConfiguration.java">Github</a>
 *
 * @author xuxiaowei
 * @since 0.0.1
 */
@Configuration
public class WebSecurityConfigurerAdapterConfiguration {

    @Bean
    @Order(-1)
    public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {

        // 此段代码来自:OAuth2AuthorizationServerConfiguration#applyDefaultSecurity(HttpSecurity)
        // @formatter:off
        OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
                new OAuth2AuthorizationServerConfigurer();
        RequestMatcher endpointsMatcher = authorizationServerConfigurer
                .getEndpointsMatcher();

        http
                .requestMatcher(endpointsMatcher)
                .authorizeRequests(authorizeRequests ->
                        authorizeRequests.anyRequest().authenticated()
                )
                .csrf(csrf -> csrf.ignoringRequestMatchers(endpointsMatcher))
                .apply(authorizationServerConfigurer);
        // @formatter:on

        // 自定义客户授权
        authorizationServerConfigurer.tokenEndpoint(tokenEndpointCustomizer -> tokenEndpointCustomizer
                        .accessTokenRequestConverter(new DelegatingAuthenticationConverter(Arrays.asList(
                                // 新增:微信 OAuth2 用于验证授权授予的 {@link
                                // OAuth2WeChatMiniProgramAuthenticationToken}
                                new OAuth2WeChatMiniProgramAuthenticationConverter(),
                                // 默认值:OAuth2 授权码认证转换器
                                new OAuth2AuthorizationCodeAuthenticationConverter(),
                                // 默认值:OAuth2 刷新令牌认证转换器
                                new OAuth2RefreshTokenAuthenticationConverter(),
                                // 默认值:OAuth2 客户端凭据身份验证转换器
                                new OAuth2ClientCredentialsAuthenticationConverter())))
                // 用于处理失败的身份验证尝试的策略。
                // .errorResponseHandler(new AccessTokenAuthenticationFailureHandlerImpl())
        );

        // 微信小程序 OAuth2 身份验证提供程序
        new OAuth2WeChatMiniProgramAuthenticationProvider(http);

        return http.build();
    }

}
# 微信小程序配置
wechat:
  mini:
    program:
      # 默认微信小程序的权限
      default-role: wechat_miniprogram
      # 小程序账户列表
      list:
        - appid: ${wx_miniapp_appid:}
          secret: ${wx_miniapp_secret:}
  1. 微信小程序可使用下列URL获取授权Token
  • grant_type
    • 必须使用 wechat_miniprogram
  • client_id
    • OAuth 2 客户ID
  • client_secret
    • OAuth 2 客户秘钥
  • appid(可缺省)
    • 小程序appid
    • 从 0.0.1-alpha.2 开始,参数缺省 appid 时,可以从请求头中的 Referer 中自动截取
  • code
    • 微信登录授权码
/oauth2/token?grant_type=wechat_miniprogram&client_id={CLIENT_ID}&client_secret={CLIENT_SECRET}&appid={APPID}&code={CODE}

批量添加远端仓库地址

点击展开 git remote add gitee https://gitee.com/xuxiaowei-com-cn/spring-boot-starter-wechat-miniprogram.git

git remote add gitlab https://gitlab.com/xuxiaowei-com-cn/spring-boot-starter-wechat-miniprogram.git

git remote add framagit https://framagit.org/xuxiaowei-com-cn/spring-boot-starter-wechat-miniprogram.git

git remote add github https://github.com/xuxiaowei-com-cn/spring-boot-starter-wechat-miniprogram.git

git remote add gitcode https://gitcode.net/xuxiaowei-com-cn/spring-boot-starter-wechat-miniprogram.git

git remote add gitlink https://gitlink.org.cn/xuxiaowei-com-cn/spring-boot-starter-wechat-miniprogram.git

参考文档

鸣谢

  1. 感谢 jetbrains 提供开发工具 IDEA 的免费授权

Stargazers over time

Stargazers over time

Java
1
https://gitee.com/xuxiaowei-com-cn/spring-boot-starter-wechat-miniprogram.git
git@gitee.com:xuxiaowei-com-cn/spring-boot-starter-wechat-miniprogram.git
xuxiaowei-com-cn
spring-boot-starter-wechat-miniprogram
spring-boot-starter-wechat-miniprogram
main

搜索帮助

53164aa7 5694891 3bd8fe86 5694891