Interface PrincipalDirectory


public interface PrincipalDirectory

主體目錄 SPI(ADR-024 決策三)

feature 查找「其他主體」的唯一管道;實作由消費端以自己的帳號持久化提供(參考實作以 AccountRepository 實作、回不可變快照)。scope 過濾(同租戶/跨租戶)不進契約—— 由 feature 以 PrincipalView.tenantId() 自行過濾,範圍政策歸 feature/應用。

  • Method Summary

    Modifier and Type
    Method
    Description
    List<? extends PrincipalView>
    全部可互動登入的主體(候選池原料;排除服務帳號等非互動主體)。 參考實作為全量載入——目錄極大的部署由實作自行優化(分頁/查詢下推)
    List<? extends PrincipalView>
    依 email 查找——重複容忍(ADR-018 決策三):email 非身分、唯一性歸應用宣告, 回全部命中;呼叫端多命中時應確定性拒絕,不選第一筆
    依穩定識別(PrincipalView.id())查找——供以不可變 id 為 subject 的機制 (如簽章連結,ADR-007:連結 subject 放帳號 id、不耦合投遞地址)於兌換時精準載入
    依登入身分識別子查找
  • Method Details

    • findByUsername

      Optional<? extends PrincipalView> findByUsername(String username)
      依登入身分識別子查找
    • findById

      Optional<? extends PrincipalView> findById(String id)
      依穩定識別(PrincipalView.id())查找——供以不可變 id 為 subject 的機制 (如簽章連結,ADR-007:連結 subject 放帳號 id、不耦合投遞地址)於兌換時精準載入
    • findByEmail

      List<? extends PrincipalView> findByEmail(String email)
      依 email 查找——重複容忍(ADR-018 決策三):email 非身分、唯一性歸應用宣告, 回全部命中;呼叫端多命中時應確定性拒絕,不選第一筆
    • findAllInteractive

      List<? extends PrincipalView> findAllInteractive()
      全部可互動登入的主體(候選池原料;排除服務帳號等非互動主體)。 參考實作為全量載入——目錄極大的部署由實作自行優化(分頁/查詢下推)