JAP

模块化的开源认证中间件
授权协议 LGPL
开发语言 Java
所属分类 Web应用开发、 OAuth开发包
软件类型 开源软件
地区 国产
投 递 者 穆毅然
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

JAP 是什么?

JAP 是一款开源的认证中间件,基于模块化设计,并且与业务高度解耦,使用起来非常灵活,开发者可以毫不费力地将 JAP 集成到任何 web 应用程序中,就像集成 JA 一样,简单方便。

JAP 要做的是为所有需要身份认证的应用提供一套标准的解决方案,集成所有 APP。方便开发者无缝对接任何第三方应用或者自有系统。

  • JAP 口号:Just auth into any app!
  • JAP 目标:让身份链接无处可藏
  • JAP 价值:方便开发者无缝对接任何第三方应用或者自有系统,提高开发效率,减少代码维护成本
  • JAP 愿景:以开源的方式,受惠于开源社区,赋能于开发者。使之成为开发者生态内必不可少的“基础设施”,以期形成新的技术标准。

ps:我们要让开发者可以基于 JAP 开发出自己的 IAM 或者 IDaaS 系统。

JAP 有什么特点?

  • 单点登录:一处登录,处处通行
  • 开箱即用:API 设计趋近于白话,类似并参考 JustAuth
  • 多平台:
    • 国内外数十家第三方平台(基于 JustAuth)
    • OAuth(OIDC) 协议的平台,内置国内外常见平台
    • SAML 协议的平台,内置国内外常见平台
  • 业务解耦:JAP 不深入具体的业务,只将授权认证方面的功能抽象出一套标准的组件,方便任意系统快速对接
  • 模块化:JAP 基于模块开发,基本做到,用哪种引哪种
  • 统一标准:一切内置实现或者自定义的实现,都基于标准的策略
  • 多语言支持:Java、Python、Go、Node等

适用于哪些场景?

  • 新项目立项,你们需要研发一套包含登录、认证的系统
  • 现有登录模块为自研,但是新一轮的技术规划中,你们想将登录认证模块重构,以更加灵活的架构适应后面的新需求,比如:集成 MFA 登录、集成 OAuth 登录等
  • 你们的项目太多,每个项目都需要登录认证模块,想解决这种重复劳动的问题
  • 从长远方面考虑,公司或组织或个人需要一套标准的、灵活的、功能全面的登录认证功能
  • 你们不想将研发成本放到登录认证这种必须但想做完善又需要花费大量时间成本、人力成本的事情上,希望有一个中间件可以完美集成登录认证功能,使研发人员有更多的时间和精力投入到业务开发中,提高研发产能和研发效率
  • 你们除了需要对接标准的身份提供商外,还有一些非标准的身份提供商,需要投入研发人员单独定制开发
  • 你们企业种用到的开发语言较多,比如:Java、Python、Node等,每种语言对应的系统,都要使用不同语言实现相同的登录认证功能
  • 你们需要研发一个支持 OAuth 登录的 Web 应用程序
  • 你们想让自己的系统支持对外提供 OAuth 服务
  • 你们需要研发一个支持 SAML 登录的 Web 应用程序,但又苦于 SAML 那庞大而繁琐的业务流程和配置
  • 你们想让自己的系统支持对外提供 SAML 服务
  • 你们想研发一个支持 LDAP 登录的程序,但又不知道如何入手
  • 你们觉得传统的账号密码非常脆弱,所想让用户使用一次性的手机验证码或邮箱验证码进行登录
  • 你们企业希望联合其现有的企业用户目录,以允许员工使用其现有的企业凭据登录各种内部和第三方应用程序。
  • ...

 

 

  • 在url后加?useUnicode=true&characterEncoding=utf-8 解决中文乱码问题。 JpaSpecificationExecutor<T> 接口 : 1.不属于Repository体系,实现一组 JPA Criteria 查询相关的方法 。 2.Specification:封装 JPA Criteria 查询条件。通常使用匿名内部类的方式来创建该接口的对象。 nati

  • JAP的简单了解 JAP与Hibernate与ORM的关系 1.JPA的由来 (1)ORM框架能够将java对象映射到关系型数据库中,能够直接持久化复杂的Java对象.ROM的出现,可以让开发者从数据库编程中解脱出来,把更大的精力放在业务模型于业务逻辑上,目前比较流行的ORM框架有"Mybatis",“Hibernate”,“TopLink”,"JDO"等 2.JAP是什么 (1)JPA (Jav

  • 1. @Entity 被Entity标注的实体类将会被JPA管理控制,在程序运行时,JPA会识别并映射到指定的数据库表 唯一参数name:指定实体类名称,默认为当前实体类的非限定名称。 若给了name属性值即@Entity(name=“XXX”),则JPA在仓储层(数据层)进行自定义查询时,所查的表名应是XXX。 2. @Table 当数据库表名主要与实体类名称不同时,使用 @Table(name

  • jsp的动作有哪些? 答 JSP共有以下6种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个JavaBean。 jsp:setProperty:设置JavaBean的属性。 jsp:getProperty:输出某个JavaBean的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为Java插

  • package cn.itcast.service.base; import java.io.Serializable; import java.util.LinkedHashMap; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.Persisten

  • jap

      クラス図を書く 会話の背景: ここにきて、やっと詳細設計に入る。 オブジェクト指向技術をベースにした開発する場合は、クラス図は詳細設計のベースとして位置づけられる。クラス図では、モデリング標準のUMLに従って、クラスおよびそれらの関係を表現し、各クラスの主な属性や操作などを記述する。 登場人物: 近藤 - システムアーキテクト 鈴木 - 開発チームリーダー 山田、田中 - 開発チームメンバー

  • JPA的注解要嘛全部都在get上 要么全都是属性上 不能混用 JPA注解 1.@Entity(name="") 必须,name为可选,对应数据库中一的个表 2、@Table(name="",catalog="",schema="") 可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息 name:可选,表示表的名称.默认地,表名和实体名称一致,只有在不

  • JPQL 就是一种查询语言,具有与  SQL  相类似的特征,  JPQL  是完全面向对象的,具备继承、多态和关联等特性,和hibernate HQL很相似。   查询语句的参数 JPQL  语句支持两种方式的参数定义方式  :  命名参数和位置参数  。  。在同一个查询语句中只允许使用一种参数定义方式。   命令参数的格式为:“  : +  参数名” 例: Query query = em.

  • JPA中的多表连接 一.User类 @ManyToMany @JoinTable(name=“user_permission”, //用来指定中间表的名称 //用于指定本表在中间表的字段名称,以及中间表依赖的是本表的哪个字段 joinColumns= {@JoinColumn(name=“uid”,referencedColumnName=“id”)}, //用于指定对方表在中间表的字段名称,以及

  • <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/s

  • <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>

  • 1.什么是JPA 首先JPA的全称叫做Java Persistence API, JPA是一个基于O/R映射的标准规范,在这个规范中, JPA只定义标准规则,不提供实现,使用者则需要按照规范中定义的方式来使用。 目前JPA的主要实现有Hibernate、EclipseLink、OpenJPA等,事实上, 由于Hibernate在数据访问解决技术领域的绝对霸主地位, JPA的标准基本是由Hibern

 相关资料
  • 如果一个页面只是一个按钮点击事件或者一个function的话,是没有必要进行模块化处理的。 而如果一个页面有两个按钮或者两个function的话,是需要进行考虑模块化处理了。 模块化不是必须的,它是业务膨胀的必然结果。 比如一个常见的表单提交: 表单验证 => 数据包装 => ajax提交 => 响应处理 => 显示对话框 无论上述的哪一个步骤,都不是一个function可以解决的, 将上述每一

  • Introduction When we say an application is modular, we generally mean it’s composed of a set of highly decoupled, distinct pieces of functionality stored in modules. As you probably know, loose coupli

  • 云联壹云平台支持对接多种认证源,如LDAP、钉钉、飞书、企业微信等,支持通过第三方应用扫码等方式登录云联壹云平台。 云联壹云 平台支持对接多种认证源,如LDAP、钉钉、飞书、企业微信等,实现通过第三方应用认证登录 云联壹云 平台。 企业用户使用 云联壹云 平台流程 向 云联壹云 平台导入用户: 本地用户(SQL源):平台内置SQL源,在认证源处无需任何配置,只需要在用户列表中新建或导入用户。 LD

  • 中间件 captcha 用于为 Macaron 实例 提供验证码服务。 GitHub API 文档 下载安装 go get github.com/go-macaron/captcha 使用示例 想要使用该中间件,您必须同时使用 cache 中间件。 // main.go import ( "github.com/go-macaron/cache" "github.com/go-ma

  • 中间件 i18n 为 Macaron 实例 提供了国际化和本地化应用的功能。 GitHub API 文档 下载安装 go get github.com/go-macaron/i18n 使用示例 // main.go import ( "github.com/go-macaron/i18n" "gopkg.in/macaron.v1" ) func main() { m

  • 在 Macaron 中, 路由是一个 HTTP 方法配对一个 URL 匹配模型. 每一个路由可以对应一个或多个处理器方法: m.Get("/", func() { // show something }) m.Patch("/", func() { // update something }) m.Post("/", func() { // create something