天天看點

JAP 1.0.2 正式釋出,jap-ids 支援多租戶、适配前後端分離、自定義授權流程等新特性JAP 1.0.2 正式釋出JAP 1.0.2 版本更新内容關于 JAP

JAP 1.0.2 正式釋出

概要

  1. jap-ids

    1.0.2 支援多租戶場景、支援動态

    issuer

    、支援前後端分離的業務場景;
  2. jap-social

    對外提供

    refreshToken

    revokeToken

    getUserInfo

    方法;
  3. 新增

    Pipeline

    模式,支援自定義部分業務場景的流程,同時引入

    SPI

    機制;
  4. 基于 Github Action,JAP 正式啟用快照版,比如:

    1.0.2-SNAPSHOT

    。(快照版實時更新,但不可用于生産環境)
  5. 使用

    jap-bom

    管理項目版本依賴,使用

    flatten-maven-plugin

    簡化 pom 版本
  6. 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

    的差別:
  • 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:

    profile

    ,

    address

    ,

    read

    and

    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()

    方法的傳回類型修改為泛型。
  • 删除

    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 by @dreamlu。使用

    flatten-maven-plugin

    簡化 pom 版本
  • 合并 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 1.0.2 正式釋出,jap-ids 支援多租戶、适配前後端分離、自定義授權流程等新特性JAP 1.0.2 正式釋出JAP 1.0.2 版本更新内容關于 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