Apollo 源码解析 —— Portal 认证与授权(一)之认证

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 8:55 更新文章,每天掉亿点点头发...

源码精品专栏

 

摘要: 原创出处 http://www.iocoder.cn/Apollo/portal-auth-1/ 「芋道源码」欢迎转载,保留摘要,谢谢!

  • 1. 概述

  • 2. AuthConfiguration

  • 3. Users

  • 4. Authorities

  • 5. UserService

  • 6. UserInfoHolder

  • 7. SsoHeartbeatHandler

  • 8. LogoutHandler


1. 概述

老艿艿:本系列假定胖友已经阅读过 《Apollo 官方 wiki 文档》 ,特别是 《Portal 实现用户登录功能》 。

本文分享 Portal 的认证与授权,侧重在认证部分

在 《Portal 实现用户登录功能》 文档的开头:

Apollo 是配置管理系统,会提供权限管理(Authorization),理论上是不负责用户登录认证功能的实现(Authentication)。

所以 Apollo 定义了一些SPI用来解耦,Apollo 接入登录的关键就是实现这些 SPI 。

和我们理解的 JDK SPI 不同,Apollo 是基于 Spring Profile 的特性,配合上 Spring Java Configuration 实现了类似 SPI 的功能。对于大多数人,我们可能比较熟悉的是,基于不同的 Profile 加载不同环境yamlproperties 配置文件。所以,当笔者看到这样的玩法,也是眼前一亮。

apollo-portal 项目中,spi 包下,我们可以看到认证相关的配置实现,如下图所示:

  • 绿框:接口。

  • 紫框:实现。

  • 红框:配置接口对应的实现。

2. AuthConfiguration

com.ctrip.framework.apollo.portal.spi.configuration.AuthConfiguration认证 Spring Java 配置。如下图:

目前有三种实现:

  • 第一种, profile=ctrip ,携程内部实现,接入了SSO并实现用户搜索、查询接口。

  • 第二种,profile=auth ,使用 Apollo 提供的 Spring Security 简单认证。

  • 第三种,profile 为空,使用默认实现,全局只有 apollo 一个账号。

一般情况下,我们使用第二种,基于 Spring Security 的实现。所以本文仅分享这种方式。对其他方式感兴趣的胖友,可以自己读下代码哈。

整体类图如下:

2.1 SpringSecurityAuthAutoConfiguration

UserSe

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值