快讯

  1. JAP 1.0.1 正式发布
  2. 《JAP产品技术白皮书》正式发布。立即获取:白皮书

JAP 1.0.1 版本内容

新增功能/支持

  • 添加 com.fujieid.jap.core.util.RequestUtil
  • 完成jap-ids模块

jap-ids 是基于 RFC6749RFC7636RFC7033等标准协议和 OpenID Connect Core 1.0 认证协议,实现的一款轻量级、业务解耦、开箱即用的新一代国产授权认证框架。

此处附上我精心绘制的jap-ids 业务流程图:

jap-ids 目前已支持以下功能:

  • 授权码模式(Authorization Code Grant)
  • 授权码-PKCE模式(Proof Key for Code Exchange)
  • 隐式授权模式(Implicit Grant)
  • 密码授权模式(Resource Owner Password Credentials Grant)
  • 客户端授权模式(Client Credentials Grant)
  • 刷新 access_token
  • 回收 access_token
  • 获取当前授权用户的基本信息
  • 校验登录状态
  • 异常响应
  • 退出登录
  • 服务发现(OpenID Connect Discovery)
  • JWK 端点(JWKS)
  • JWK 令牌颁发
  • 自定义 JWT 加解密证书
  • 全场景 response type 支持(codetokenid_tokenid_token tokencode id_tokencode tokencode id_token token

关于 jap-ids 的更多使用详情,请参考示例项目:jap-ids-demo,或者查阅文档:IDS OAuth 2.0 服务端

代码修改/优化

  • [jap-oidc] 优化 OidcStrategy#authenticate 方法,缓存 OidcDiscoveryDto,减少不必要的 http 请求
  • [jap-oidc] 优化 OidcUtil 工具类的代码,解决一些已知问题
  • [jap-social] 解决一些已知问题
  • 重构 com.fujieid.jap.core.cache.JapLocalCache,实现定时器,定期清理本地缓存

合并 PR

Issue

JAP 产品技术白皮书

经过两个月的整理、修改、迭代,我们 JAP 的技术白皮书,终于完成了!

在 “JAP 社区交流群”中,不少朋友都期待着《JAP 产品技术白皮书》的发布。

前期我们也做过一些调研,大部分开发者/用户的述求基本上是:JAP 文档中有太多专有技术名词,理解起来比较困难。针对此,我们在白皮书中对于 JAP 相关领域的概念、名词做了专门解释,能够帮助开发者/用户更深入的了解、使用相关技术。

同时,在此份白皮书中,我们对 JAP 的功能、特点、架构、流程等都做了全面的、详细的解释,部分内容如下:


希望这份白皮书,能够帮助到各位开发者/用户。

关于 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 产品技术白皮书

相关链接

欢迎关注、欢迎收藏、欢迎 star。

JAP 1.0.1 以及 《JAP产品技术白皮书》正式发布的更多相关文章

  1. 达梦产品技术支持培训-day7-DM8数据库备份与还原-原理

    (本文部分内容摘自DM产品技术支持培训文档,如需要更详细的文档,请查询官方操作手册,谢谢) 1.DM8备份还原简介 1.1.基本概念 (1)表空间与数据文件 ▷ DM8表空间类型: ▷ SYSTEM ...

  2. 测试架构图 High Level 产品技术(无事来更新,证明这个博客还是Live的)

    一个完整的产品测试所需要掌握的产品技术架构. 1.最底层硬件平台(服务器与存储) 对于一个大型商业解决方案来说,性能与可靠性是非常重要的要求,那么服务器与存储就是专门来满足需求的. 服务器: 服务器端 ...

  3. 2014Esri全球用户大会——亮点系列之产品技术

    2014年Esri全球用户大会已于7月14日~18日隆重召开,让我们一起来回味下面精彩内容: 序:大会主题"Creating Our Future" [解读]:     传达两个核 ...

  4. http://stblog.baidu-tech.com/?p=1684) coredump调试记录 - PHP篇 原创: 扶墙 贝壳产品技术 今天

    http://stblog.baidu-tech.com/?p=1684) coredump调试记录 - PHP篇 原创: 扶墙 贝壳产品技术 今天

  5. MySQL实时监听——EPX 原创: 奕X 贝壳产品技术 今天

    MySQL实时监听——EPX 原创: 奕X 贝壳产品技术 今天

  6. [华三] IPv6技术白皮书(V1.00)

    IPv6技术白皮书(V1.00) http://www.h3c.com/cn/d_200802/605649_30003_0.htm H3C S7500E IPv6技术白皮书 关键词:IPv6,隧道 ...

  7. SSL技术白皮书

    首页产品技术操作系统ComwareV5安全和VPN SSL技术白皮书 下载 收藏 打印 推荐 摘自:http://www.h3c.com/cn/d_200812/622834_30003_0.htm# ...

  8. URPF技术白皮书

    URPF技术白皮书 摘    要:本文介绍了URPF的应用背景,URPF主要用于防止基于源地址欺骗的网络攻击行为,例如基于源地址欺骗的DoS攻击和DDoS攻击:随后介绍了URPF的技术原理以及URPF ...

  9. Isolate-user-vlan技术白皮书

    http://www.h3c.com.cn/Products___Technology/Technology/LAN/Other_technology/Technology_book/200804/6 ...

随机推荐

  1. scrapy 运行逻辑

    爬虫的步骤:发送请求获得响应→解析并提取数据→保存数据 我们沿用这个朴素的逻辑去理解scrapy 一.发送请求获得响应 1.爬虫发送请求request到引擎 2.引擎将请求request传递给调度器s ...

  2. RabbitMq手动确认时的重试机制

    本文转载自RabbitMq手动确认时的重试机制 消息手动确认模式的几点说明 监听的方法内部必须使用channel进行消息确认,包括消费成功或消费失败 如果不手动确认,也不抛出异常,消息不会自动重新推送 ...

  3. epoll使用

    epoll通过下面3个epoll系统调用为用户提供服务. (1)epoll_create系统调用 epoll_create在C库中的原型如下: int epoll_create(int size); ...

  4. mbatis中的#{}和${}

    #{}和${}的区别是什么?a.#{}是预编译处理,${}是字符串替换. b.Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set ...

  5. Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级

    (四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...

  6. 微信小程序:添加全局的正在加载中图标效果

    在发送请求的时候,显示一个正在加载中的小图标.在加载下一页的时候也显示正在加载中.同时数据请求回来了,把加载中进行关闭. 开发----API-----界面 在哪里添加这两段代码会比较方便呢?一个项目有 ...

  7. 五. SpringCloud服务降级和熔断

    1. Hystrix断路器概述 1.1 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败.这就造成有可能会发生服务雪崩.那么什么是服务雪崩呢 ...

  8. Java数组之冒泡排序

    package com.kangkang.array; import java.util.Arrays; public class demo07 { public static void main(S ...

  9. 《C++ Primer》笔记 第2章 变量和基本类型

    如果你的数值超过了int表示范围,选用long long 如果你需要使用一个不大的整数,那么明确指定它的类型是signed char或者unsigned char 执行浮点数运算选用double 当一 ...

  10. #progma pack(x)说明

    1.字节对齐(内存相关) 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数 ...