qq活令牌生成软件

OAuth是一种授权机制,允许第三方应用获取用户数据,目前是最流行的授权机制。它的应用场景广泛,例如在网站登录、社交媒体分享等场景中都可见其身影。

设想一下你在网站A上浏览,看到一篇喜欢的帖子,想要点赞时,网站会提示你进行登录操作。登录后,你的QQ或微信的昵称和头像等信息会被回填到网站A中,此时你就可以进行点赞操作了。这种便捷的登录方式背后就是OAuth授权机制的实现。

在详细了解OAuth2之前,我们先来了解一下其中涉及的一些名词定义。客户端(Client)是请求资源服务器资源的软件,它本身不会存储用户快捷登录的账号和密码,只是通过资源拥有者的授权去请求资源。资源拥有者(Resource Owner)通常是用户,拥有QQ/微信等账号的用户。认证服务器(Authorization Server)提供身份认证和用户授权的服务器,会向客户端颁发令牌(token)。资源服务器(Resource Server)存储用户资源的服务器。

OAuth的认证流程可以简单概括为以下几个步骤:客户端向资源拥有者发送授权申请;资源拥有者同意客户端的授权,返回授权码;客户端使用授权码向认证服务器申请令牌;认证服务器对客户端进行身份校验,认证通过后发放令牌;客户端拿着认证服务器颁发的令牌去资源服务器请求资源;资源服务器校验令牌的有效性,返回资源信息。

接下来,我们进入实战阶段。在搭建项目之前,我们需要做一些准备工作,包括创建数据库表来存储OAuth相关的数据。具体的建表语句可以参考官方初始化sql,也可以查看提供的init.sql文件。这些表包括存储客户端配置信息的oauth_client_details,存储生成的令牌信息的oauth_access_token等。

除了数据库表,我们还需要引入一些依赖,包括Spring Boot Web、Spring Cloud Security、Spring Cloud OAuth2和Spring Security JWT等。

在资源服务方面,我们需要配置服务端口、应用名称、数据库、mybatis和日志等。然后写一个简单的控制层代码来模拟资源访问。接着创建配置类来指定token的持久化策略、当前资源的id和token的存储策略等。

认证服务的配置与资源服务类似,主要涉及到Security的配置。我们还需要配置忽略校验的url,这部分代码已经注释掉,可以下载源码自行查看。

代码如下:

java

@Override

public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

// 通过baseMapper查询数据库,返回用户信息

return this.baseMapper.selectOne(new LambdaQueryWrapper().eq(SysUser::getUsername, username));

java

/

指定认证对象的来源和加密方式

@param auth

@throws Exception

/

@Override

public void configure(AuthenticationManagerBuilder auth) throws Exception {

auth.userDetailsService(userService).passwordEncoder(passwordEncoder());

/

安全拦截机制(最重要)

@param httpSecurity

@throws Exception

/

@Override

public void configure(HttpSecurity httpSecurity) throws Exception {

httpSecurity

// CSRF禁用,因为不使用session

.csrf().disable()