JAP 1.0.2 正式釋出
概要
1.0.2 支援多租戶場景、支援動态
jap-ids
、支援前後端分離的業務場景;
issuer
對外提供
jap-social
、
refreshToken
和
revokeToken
方法;
getUserInfo
- 新增
模式,支援自定義部分業務場景的流程,同時引入
Pipeline
機制;
SPI
- 基于 Github Action,JAP 正式啟用快照版,比如:
。(快照版實時更新,但不可用于生産環境)
1.0.2-SNAPSHOT
- 使用
管理項目版本依賴,使用
jap-bom
簡化 pom 版本
flatten-maven-plugin
- JustAuth 和 JAP 項目已經加入 “開源軟體供應鍊點亮計劃 - 暑期2021”,歡迎各位在校學生踴躍參與!可在“碼一碼”公衆号中回複 “summer” 擷取活動詳情。
JAP 1.0.2 版本更新内容
本次更新涉及到字段、方法傳回類型的修改,請更新的時候注意。可以參照本文下方的更新說明進行修改、調整。
新功能/特性
jap-ids 子產品
- 在
中添加IdsConfig
屬性,enableDynamicIssuer
類型。當boolean
時,開發者不再需要單獨設定enableDynamicIssuer=true
,issuer
将從目前請求的域名中自動提取jap-ids
。issuer
此功能針對用戶端支援的業務場景。可以通過域名的辨別(比如二級域名
自定義域名
中的辨別就是
jap.justauth.plus
)确定使用者所屬的用戶端(也可以對應到租戶)。
jap
- 在
中添加IdsConfig
屬性,loginPageUrl
與loginPageUrl
的差別:loginUrl
:登入表單頁面 URL,關鍵字:頁面。
loginPageUrl
:登入的api URL,關鍵字:API。
loginUrl
- 在
中添加IdsConfig
屬性,externalLoginPageUrl
類型。boolean
如果授權服務未提供登入頁面(登入頁面由其他服務托管,比如登入頁面在單獨的靜态服務中部署),則需要啟用此配置。
- 在
中添加IdsConfig
屬性,externalConfirmPageUrl
類型。boolean
如果授權服務未提供授權确認頁面(授權确認頁面由其他服務托管,比如授權确認頁面在單獨的靜态服務中部署),則需要啟用此配置。
- 在
中添加IdsConfig
屬性。authorizeAutoApproveUrl
當授權 URL 中包含時,授權伺服器在使用者登入完成後,不會跳轉到
autoapprove=true
,而是直接跳轉到
confirmPageUrl
。
authorizeAutoApproveUrl
- 添加
接口類,以支援登入後對使用者資料的自定義操作,預設為IdsUserStoreService
存儲使用者資訊。感謝微信使用者(antscqy)的建議。Session
- 添加
接口,開發人員可以自定義流程,目前僅支援自定義IdsPipeline
(過濾器)和IdsxxFilter
的流程。LoginEndpoint
- 添加
插件機制,spi
對外提供的接口,都可以以jap-ids
的形式實作。spi
- 添加以下内置 scope:
,profile
,address
andread
。write
- 在
中添加OauthUtil#createAuthorizeUrl(String, IdsRequestParam)
參數(可選的參數)。uid
jap-social 子產品
-
對外提供SocialStrategy
、refreshToken
和revokeToken
方法。感謝群友的回報。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()
- 删除
方法,不再允許重置系統内置的 scope,新版IdsScopeProvider#initScopes(List<IdsScope>)
支援添加新的jap-ids
以及 修改内置的scope
描述。scope
- 當
時,response_type=id_token
中将傳回使用者的基本資訊(依據id_token
授權範圍)。scope
- 優化
方法的業務流程,對于使用者的特定屬性,比如手機号、郵箱等,按照提供的UserInfoEndpoint#getCurrentUserInfo(HttpServletRequest)
決定是否傳回。scope
- 修改
接口的IdsUserService
和loginByUsernameAndPassword
方法,分别新增了getByName
入參。clientId
針對多租戶場景下,同一個使用者可能存在多個租戶主體下,單純依靠使用者賬密已經無法唯一确定一個使用者,這種情況下業務系統可以根據 clientId
擷取具體的租戶下的使用者資訊。
PR
- 合并 Gitee PR #11 by @dreamlu。使用
簡化 pom 版本flatten-maven-plugin
- 合并 Gitee PR #12 by @sywd。添加
管理項目版本依賴jap-bom
- 合并 Gitee PR #13 by @dreamlu。代碼優化,友善作為 Spring bean 初始化
- 合并 Gitee PR #14 by @dreamlu。優化 pom 配置,修複
導入問題jap-bom
關于 JAP
JAP 是什麼?
JAP 是一款開源的登入認證中間件,基于子產品化設計,為所有需要登入認證的 WEB 應用提供一套标準的技術解決方案,開發者可以基于 JAP 适配絕大多數的 WEB 系統(自有系統、聯邦協定)。
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 産品技術白皮書》
相關連結
- Gitee:https://gitee.com/fujieid/jap
- Github:https://github.com/fujieid/jap
- CodeChina:https://codechina.csdn.net/fujieid/jap
- 開發者文檔:https://justauth.plus