CAS5.3为OAuth2.0添加自定义用户信息

关于CAS的搭建以及使用,在之前的文章有提到过, 现在需要在之前的基础上继续完善, 今天要完善的内容是给OAuth2.0添加自定义的用户信息, 因为之前的默认返回的用户信息对我们有用的也就只有用户名, 好在这些都是可以自定义的

分析

CAS中的OAuth2.0提供了一个/oauth2.0/profile接口, 这个接口是可以获取用户资源的因此我们改造它就可以了

OAuth20UserProfileViewRenderer

我们要做的就是自定义实现这个接口, 然后在这个方法里面返回我们需要的用户信息

自定义实现

@Slf4j
public class CustomOAuth20UserProfileViewRenderer implements OAuth20UserProfileViewRenderer {
    @Autowired
    private SysUserService sysUserService;

    @Override
    public String render(Map<String, Object> model, AccessToken accessToken) {
        try {
            //获取id, id其实就是用户名
            String userName = (String) model.get("id");
            if (userName != null) {
                //根据用户名获取用户详细信息
                SysUser sysUser = sysUserService.getBaseMapper().selectOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUserName, userName));
                if (sysUser != null) {
                    //将用户信息放入model中
                    SysUserVo sysUserVo = new SysUserVo();
                    BeanUtils.copyProperties(sysUser,sysUserVo);
                    return JSONUtil.toJsonStr(sysUserVo);
                }
            }
        } catch (Exception e) {
            log.error("OAuth获取用户信息错误!", e);
            throw new RuntimeException("OAuth获取用户信息错误!");
        }
        return null;
    }
}

该方法是现充model里获取用户名, 这里用户名的key是id, 这个是CAS默认的, 然后根据用户名获取用户信息即可,自定义用户的部分就不多介绍了,主要的就是这个方法

将自定义接口注入容器

@Configuration("customAuthenticationConfiguration")
@EnableConfigurationProperties(CasConfigurationProperties.class)
public class CustomOAuthConfiguration {
    @Bean
    @RefreshScope
    public OAuth20UserProfileViewRenderer oauthUserProfileViewRenderer() {
        CustomOAuth20UserProfileViewRenderer customOAuth20UserProfileViewRenderer = new CustomOAuth20UserProfileViewRenderer();
        return customOAuth20UserProfileViewRenderer;
    }
}

添加spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  org.apereo.cas.config.CasEmbeddedContainerTomcatConfiguration,\
  org.apereo.cas.config.CasEmbeddedContainerTomcatFiltersConfiguration,\
 xxx.xxx.xxx.config.CustomOAuth20UserProfileViewRenderer

测试接口返回

相关推荐

  1. wpf 定义控件添加滚动条

    2024-07-22 01:36:02       59 阅读
  2. wordpress后台添加一个定义页面

    2024-07-22 01:36:02       43 阅读
  3. Spring Security OAuth2 认证服务器定义异常处理

    2024-07-22 01:36:02       60 阅读
  4. Cesiumjs 添加定义文案

    2024-07-22 01:36:02       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 01:36:02       103 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 01:36:02       114 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 01:36:02       93 阅读
  4. Python语言-面向对象

    2024-07-22 01:36:02       99 阅读

热门阅读

  1. linux 安装 大模型ollama

    2024-07-22 01:36:02       27 阅读
  2. 349. 两个数组的交集

    2024-07-22 01:36:02       32 阅读
  3. C# ORM框架-Entity Framework Core

    2024-07-22 01:36:02       31 阅读
  4. vue排序

    2024-07-22 01:36:02       25 阅读
  5. 项目架构图的最佳实践:绘制、维护与示例

    2024-07-22 01:36:02       33 阅读
  6. C++多态

    C++多态

    2024-07-22 01:36:02      28 阅读
  7. Nginx 不转发请求 IP

    2024-07-22 01:36:02       30 阅读
  8. ctfshow web AK杯

    2024-07-22 01:36:02       27 阅读