pac4j/javalin-pac4j

GitHub: pac4j/javalin-pac4j

javalin-pac4j 是一个基于 pac4j 的 Java 安全库,为 Javalin 应用提供全面的身份验证和授权解决方案。

Stars: 48 | Forks: 10

`javalin-pac4j` 项目是一个用于 [Javalin](https://javalin.io) Web 应用程序的简单而强大的安全库,它支持 身份验证和授权,同时也支持注销以及诸如会话固定和 CSRF 防护等高级功能。 它基于 Java 17 和 **[pac4j 安全引擎](https://github.com/pac4j/pac4j) v6**。该库以 Apache 2 许可证提供。 [**主要概念和组件:**](http://www.pac4j.org/docs/main-concepts-and-components.html) 1. 一个 [**客户端**](http://www.pac4j.org/docs/clients.html) 代表一种身份验证机制。它执行登录过程并返回用户配置文件。间接客户端用于 UI 身份验证,而直接客户端用于 Web 服务身份验证: ▸ OpenID Connect - SAML - CAS - OAuth - HTTP - LDAP - SQL - JWT - MongoDB - IP 地址 2. 一个 [**授权器**](http://www.pac4j.org/docs/authorizers.html) 旨在检查已认证用户配置文件或当前 Web 上下文的授权情况: ▸ 角色/权限 - 匿名/记住我/(完全)认证 - 配置文件类型、属性 - CORS - CSRF - 安全头 - IP 地址、HTTP 方法 3. 一个 [**匹配器**](http://www.pac4j.org/docs/matchers.html) 定义 `SecurityHandler` 是否必须被应用,可用于额外的 Web 处理。 4. `SecurityHandler` 通过检查用户是否已认证以及授权是否有效(根据客户端和授权器配置)来保护 URL。如果用户未认证,它会为直接客户端执行身份验证或为间接客户端启动登录过程。 5. `CallbackHandler` 完成间接客户端的登录过程。 6. `LogoutHandler` 处理注销过程。 只需按照以下简单步骤来保护您的 Javalin 应用程序: ### 1) 添加所需的依赖项 (`javalin-pac4j` 和 `pac4j-*` 库) | javalin-pac4j | JDK | pac4j | Javalin | |---------------|-----|-------|---------| | v8 | 17 | v6 | v7 | | v7 | 17 | v6 | v5.6 | | v6 | 11 | v5 | v5.2 | | v5 | 11 | v5 | v3.13 | | v3 | 8 | v4 | v3.13 | 要获取最新版本,您需要为以下内容添加依赖项: - `javalin-pac4j` 库(groupId: **org.pac4j**, *version*: **8.0.0**) - 适当的 `pac4j` [子模块](http://www.pac4j.org/docs/clients.html)(groupId: **org.pac4j**, *version*: **6.3.3**):用于 OAuth 支持(Facebook、Twitter 等)的 `pac4j-oauth`,用于 CAS 支持的 `pac4j-cas`,用于 LDAP 身份验证的 `pac4j-ldap`,等等。 所有已发布的构件都可在 [Maven 中央仓库](http://search.maven.org/#search%7Cga%7C1%7Cpac4j) 中找到。 ### 2) 定义配置 配置(`org.pac4j.core.config.Config`)包含应用程序处理安全所需的所有客户端和授权器。 * [配置工厂示例](https://github.com/pac4j/javalin-pac4j/blob/master/src/test/java/org/pac4j/javalin/example/ExampleConfigFactory.java) * [授权器示例](https://github.com/pac4j/javalin-pac4j/blob/master/src/test/java/org/pac4j/javalin/example/CustomAuthorizer.java) * [身份验证器示例](https://github.com/pac4j/javalin-pac4j/blob/master/src/test/java/org/pac4j/javalin/example/TrivialUserPassAuthenticator.java) ### 3) 保护 URL 创建 `SecurityHandler` 的一个实现,并将其附加到一个覆盖您想要保护的 URL 的 `before` 处理器。 [示例应用](https://github.com/pac4j/javalin-pac4j/blob/master/src/test/java/org/pac4j/javalin/example/JavalinPac4jExample.java) 展示了每个客户端的实现。 ### 4) 仅为间接客户端定义回调端点 (`CallbackHandler`) 对于间接客户端(如 Facebook),用户会被重定向到外部身份提供商进行登录,然后返回到应用程序。 [示例应用](https://github.com/pac4j/javalin-pac4j/blob/master/src/test/java/org/pac4j/javalin/example/JavalinPac4jExample.java) 展示了其实现。 ### 5) 获取用户配置文件(通过 `HttpServletRequest` 或 `ProfileManager`) [示例应用](https://github.com/pac4j/javalin-pac4j/blob/master/src/test/java/org/pac4j/javalin/example/JavalinPac4jExample.java) 展示了其实现。 ### 6) 注销 (`LogoutHandler`) 您可以进行本地注销或全局注销。 [示例应用](https://github.com/pac4j/javalin-pac4j/blob/master/src/test/java/org/pac4j/javalin/example/JavalinPac4jExample.java) 展示了两种实现方式。 ## 需要帮助? 您可以使用 [邮件列表](http://www.pac4j.org/mailing-lists.html) 或 [商业支持](http://www.pac4j.org/commercial-support.html)。 ## 开发 Maven 构件通过 Github Actions 构建,并在 Central Portal 快照仓库中提供。此仓库必须在例如 Maven `pom.xml` 文件中添加: ``` Central Portal Snapshots central-portal-snapshots https://central.sonatype.com/repository/maven-snapshots/ false true ```
标签:Apache许可证, CAS认证, CSRF防护, GHAS, Javalin框架, Java安全, JS文件枚举, JWT令牌, LDAP认证, OAuth集成, OpenID Connect, pac4j引擎, SAML认证, Web安全, 会话固定防护, 会话安全, 单点登录, 域名枚举, 多协议认证, 安全处理, 授权库, 授权管理, 注销管理, 登录管理, 网络安全, 蓝队分析, 认证库, 隐私保护