JAP 1.0.2 正式发布,jap-ids 支持多租户、适配前后端分离、自定义授权流程等新特性

码一码

共 5494字,需浏览 11分钟

 ·

2021-05-28 11:12

JAP 1.0.2 正式发布

概要

1.jap-ids 1.0.2 支持多租户场景、支持动态 issuer、支持前后端分离的业务场景;2.jap-social 对外提供 refreshTokenrevokeToken 和 getUserInfo 方法;3.新增 Pipeline 模式,支持自定义部分业务场景的流程,同时引入 SPI 机制;4.基于 Github Action,JAP 正式启用快照版,比如:1.0.2-SNAPSHOT。(快照版实时更新,但不可用于生产环境)5.使用 jap-bom 管理项目版本依赖,使用 flatten-maven-plugin 简化 pom 版本6.JustAuth 和 JAP 项目已经加入 “开源软件供应链点亮计划 - 暑期2021[1]”,欢迎各位在校学生踊跃参与!可在“码一码”公众号中回复 “summer” 获取活动详情。

JAP 1.0.2 版本更新内容

本次更新涉及到字段、方法返回类型的修改,请升级的时候注意。可以参照本文下方的更新说明进行修改、调整。

新功能/特性

jap-ids 模块

IdsConfig中添加 enableDynamicIssuer 属性,boolean 类型。当 enableDynamicIssuer=true 时,开发者不再需要单独设置 issuerjap-ids 将从当前请求的域名中自动提取 issuer

此功能针对客户端支持自定义域名的业务场景。可以通过域名的标识(比如二级域名jap.justauth.plus 中的标识就是 jap)确定用户所属的客户端(也可以对应到租户)。

IdsConfig 中添加 loginPageUrl 属性,loginPageUrl 与 loginUrl 的区别:

loginPageUrl:登录表单页面 URL,关键字:页面loginUrl:登录的api URL,关键字:API

IdsConfig中添加 externalLoginPageUrl 属性,boolean 类型。

如果授权服务未提供登录页面(登录页面由其他服务托管,比如登录页面在单独的静态服务中部署),则需要启用此配置。

IdsConfig中添加 externalConfirmPageUrl 属性,boolean 类型。

如果授权服务未提供授权确认页面(授权确认页面由其他服务托管,比如授权确认页面在单独的静态服务中部署),则需要启用此配置。

IdsConfig中添加 authorizeAutoApproveUrl 属性。

当授权 URL 中包含 autoapprove=true 时,授权服务器在用户登录完成后,不会跳转到 confirmPageUrl,而是直接跳转到 authorizeAutoApproveUrl

添加 IdsUserStoreService 接口类,以支持登录后对用户数据的自定义操作,默认为 Session 存储用户信息。感谢微信用户(antscqy)的建议添加 IdsPipeline 接口,开发人员可以自定义流程,目前仅支持自定义 IdsxxFilter(过滤器)和 LoginEndpoint 的流程。添加 spi 插件机制,jap-ids 对外提供的接口,都可以以 spi 的形式实现。添加以下内置 scope:profileaddressread and write在 OauthUtil#createAuthorizeUrl(String, IdsRequestParam) 中添加 uid 参数(可选的参数)。

jap-social 模块

SocialStrategy 对外提供 refreshTokenrevokeToken 和 getUserInfo 方法。感谢群友的反馈。

修改

POM 依赖

将 javax.servlet-api 依赖替换为 jakarta.servlet-api

jap-ids 模块

将 IdsConfig.confirmUrl 参数名称修改为 confirmPageUrl将 ApprovalEndpoint#getAuthClientInfo(HttpServletRequest) 的返回类型修改为IdsResponse<String, Map<String, Object>>将 Ap provalEndpoint#authorize(HttpServletRequest) 的返回类型修改为 IdsResponse<String, String>将 AuthorizationEndpoint#agree(HttpServletRequest) 的返回类型修改为 IdsResponse<String, String>将 LoginEndpoint#signin(HttpServletRequest) 的返回类型修改为 IdsResponse<String, String>将 LogoutEndpoint#logout(HttpServletRequest) 的返回类型修改为 IdsResponse<String, String>修改 ClientDetail 类的注释。将 IdsResponse#getData() 方法的返回类型修改为泛型删除 IdsScopeProvider#initScopes(List<IdsScope>) 方法,不再允许重置系统内置的 scope,新版 jap-ids 支持添加新的 scope 以及 修改内置的 scope 描述。response_type=id_token时,id_token 中将返回用户的基本信息(依据 scope 授权范围)。优化 UserInfoEndpoint#getCurrentUserInfo(HttpServletRequest) 方法的业务流程,对于用户的特定属性,比如手机号、邮箱等,按照提供的 scope 决定是否返回。修改 IdsUserService 接口的loginByUsernameAndPassword 和 getByName 方法,分别新增了 clientId 入参。

针对多租户场景下,同一个用户可能存在多个租户主体下,单纯依靠用户账密已经无法唯一确定一个用户,这种情况下业务系统可以根据 clientId 获取具体的租户下的用户信息。

PR

合并 Gitee PR #11[2] by @dreamlu[3]。使用 flatten-maven-plugin 简化 pom 版本合并 Gitee PR #12[4] by @sywd[5]。添加 jap-bom 管理项目版本依赖合并 Gitee PR #13[6] by @dreamlu[7]。代码优化,方便作为 Spring bean 初始化合并 Gitee PR #14[8] by @dreamlu[9]。优化 pom 配置,修复 jap-bom 导入问题

关于 JAP

JAP 是什么?

JAP 是一款开源的登录认证中间件,基于模块化设计,为所有需要登录认证的 WEB 应用提供一套标准的技术解决方案,开发者可以基于 JAP 适配绝大多数的 WEB 系统(自有系统、联邦协议)。

JAP 有哪些功能?

JAP 开源的统一登录认证标准组件 - 包含的功能

JAP 有什么优势?

易用性:JAP 的 API 沿袭 JustAuth 的简单性,做到了开箱即用的程度。JAP 高度抽象各种登录场景,提供了多套简单使用的 API,极大程度的降低了开发者的学习成本和使用成本全面性:JAP 全量适配 JustAuth 支持的第三方平台,实现第三方登录。同时也支持所有基于标准OAuth2.0 协议或者 OIDC 协议或者 SAML 协议的应用、系统,同时 JAP 还提供不同语言版本的项目 SDK,适配多种研发场景模块化:JAP 基于模块化设计开发,针对每一种登录场景,比如账号密码、OAuth、OIDC等,都单独提供了独有的模块化解决方案标准化:JAP 和业务完全解耦,将登录认证相关的逻辑抽象出一套标准的技术解决方案,针对每一种业务场景,比如用户登录、验证密码、创建并绑定第三方系统的账号等,都提供了一套标准的策略或者接口,开发者可以基于 JAP,灵活并方便的完成相关业务逻辑的开发和适配通用性:JAP 不仅可以用到第三方登录、OAuth授权、OIDC认证等业务场景,还能适配开发者现有的业务系统的普通账号密码的登录场景,基本将所有登录相关的业务场景都已经涵盖。针对 WEB 应用,JAP 将提供满足各种不同登录场景的解决方案(和开发语言无关)

JAP 适用于哪些场景?

JAP 适用于所有需要登录认证功能的场景。比如:

要求规范:新项目立项,你们需要研发一套包含登录、认证的系统,并且从长远方面考虑,你们需要一套标准的、灵活的、功能全面的登录认证功能。需求灵活:现有登录模块为自研,但是新一轮的技术规划中,你们想将登录认证模块重构,以更加灵活的架构适应后面的新需求,比如:集成 MFA 登录、集成 OAuth 登录、SAML登录等。力求省事:你们的项目太多(或者是开发语言较多,比如:Java、Python、Node 等),每个项目都需要登录认证模块,想解决这种重复劳动的问题,使研发人员有更多的时间和精力投入到业务开发中,提高研发产能和研发效率。关于 JAP 的更多内容,可以参考《JAP 产品技术白皮书[10]

相关链接

Gitee:https://gitee.com/fujieid/japGithub:https://github.com/fujieid/japCodeChina:https://codechina.csdn.net/fujieid/jap开发者文档:https://justauth.plus

引用链接

[1] 开源软件供应链点亮计划 - 暑期2021: https://justauth.wiki/resource/summer2021.html
[2] #11: https://gitee.com/fujieid/jap/pulls/11
[3] @dreamlu: https://gitee.com/dreamlu
[4] #12: https://gitee.com/fujieid/jap/pulls/12
[5] @sywd: https://gitee.com/sywd
[6] #13: https://gitee.com/fujieid/jap/pulls/13
[7] @dreamlu: https://gitee.com/dreamlu
[8] #14: https://gitee.com/fujieid/jap/pulls/14
[9] @dreamlu: https://gitee.com/dreamlu
[10] JAP 产品技术白皮书: https://justauth.plus/paper/JAP-paper-V1.0.0.pdf


浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报