jap-ids
1.0.2 支持多租户场景、支持动态issuer
、支持前后端分离的业务场景;jap-social
对外提供refreshToken
、revokeToken
和getUserInfo
方法;- 新增
Pipeline
模式,支持自定义部分业务场景的流程,同时引入SPI
机制;- 基于 Github Action,JAP 正式启用快照版,比如:
1.0.2-SNAPSHOT
。(快照版实时更新,但不可用于生产环境)- 使用
jap-bom
管理项目版本依赖,使用flatten-maven-plugin
简化 pom 版本- JustAuth 和 JAP 项目已经加入 “开源软件供应链点亮计划 - 暑期2021”,欢迎各位在校学生踊跃参与!
本次更新涉及到字段、方法返回类型的修改,请升级的时候注意。可以参照本文下方的更新说明进行修改、调整。
IdsConfig
中添加 enableDynamicIssuer
属性,boolean
类型。当 enableDynamicIssuer=true
时,开发者不再需要单独设置 issuer
,jap-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
的形式实现。profile
, address
, read
and write
。OauthUtil#createAuthorizeUrl(String, IdsRequestParam)
中添加 uid
参数(可选的参数)。SocialStrategy
对外提供 refreshToken
、revokeToken
和 getUserInfo
方法。感谢群友的反馈。javax.servlet-api
依赖替换为 jakarta.servlet-api
。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
获取具体的租户下的用户信息。
flatten-maven-plugin
简化 pom 版本jap-bom
管理项目版本依赖jap-bom
导入问题JAP 是一款开源的登录认证中间件,基于模块化设计,为所有需要登录认证的 WEB 应用提供一套标准的技术解决方案,开发者可以基于 JAP 适配绝大多数的 WEB 系统(自有系统、联邦协议)。
JAP 适用于所有需要登录认证功能的场景。比如:
要求规范:新项目立项,你们需要研发一套包含登录、认证的系统,并且从长远方面考虑,你们需要一套标准的、灵活的、功能全面的登录认证功能。
需求灵活:现有登录模块为自研,但是新一轮的技术规划中,你们想将登录认证模块重构,以更加灵活的架构适应后面的新需求,比如:集成 MFA 登录、集成 OAuth 登录、SAML登录等。
力求省事:你们的项目太多(或者是开发语言较多,比如:Java、Python、Node 等),每个项目都需要登录认证模块,想解决这种重复劳动的问题,使研发人员有更多的时间和精力投入到业务开发中,提高研发产能和研发效率。
关于 JAP 的更多内容,可以参考《JAP 产品技术白皮书》