Keycloak:为浏览器应用和RESTful Web Service提供SSO和IDM集成
Keycloak基于OAuth 2.0、Open ID Connect、JSON Web Token(JWT)和SAML 2.0规范,为浏览器应用和RESTful Web Service提供SSO和IDM集成。Keycloak紧密集成了众多平台以及HTTP安全代理服务,代理服务集成没有那么紧密。可以将Keycloak作为黑盒装备部署到现有的应用服务器上,也可以用作Openshift云服务和功能。
遵循Apache 2.0开源协议发布。
可以通过demo了解Keycloak:
主要功能
- 支持开放ID链接、SAML 2.0 SSO和浏览器社交应用代理的单点登出。无需编写代码,即可提供Google、Facebook、Yahoo、Twitter社交应用登录。
- 认证代理:可以作为外部SAML 2.0或OIDC代理进行认证。也可以集成LDAP/活动目录。
- 带有验证码功能的用户注册(可选)
- (通过Google认证器)提供密码及TOTP功能。用户证书认证即将上线。
- 为管理员和普通用户提供用户会话管理。
- 为用户主页提供定制主题:包括登录、授权页面,账户管理、email和管理员终端都可以定制!
- 为REST服务提供OAuth 2.0 Token认证。
- 将REST服务Token传递集成到浏览器应用中。
- 管理员REST API
- 支持CORS
- 管理员终端提供了用户管理、角色管理、角色映射、应用程序管理、用户会话、CORS Web源及OAuth客户端支持。
- 作为独立WAR、设备或Openshift云服务(SaaS)部署。
- 支持JBoss AS7、EAP 6.x、Wildfly、Tomcat、Jetty和纯Javascript应用程序。计划支持Node.js、RAILS、GRAILS和其它非Java应用程序。
- 为开发环境、开发平台和编程语言提供无需客户端适配器的HTTP安全代理。
- 为纯Javascript应用程序提供Javascript/HTML 5适配器。
- 为管理员终端提供会话管理。
- 声明/断言映射。让你的Token和断言XML看起来如你所愿。
- 证书撤销策略。
- 密码策略。
- 扮演(Impersonation),管理员可以扮演用户调试问题。
- 为现代应用程序和服务提供开源认证及访问管理。
了解更多关于Keycloak的信息,请访问Keycloak主页和开发博客。
构建
请确保已安装 JDK 8(或更新版本)、Maven 3.2.1(或更新版本)以及Git。
1 2 3 |
java -version mvn -version git --version |
请先clone Keycloak仓库:
1 2 |
git clone https://github.com/keycloak/keycloak.git cd keycloak |
构建Keycloak请运行:
1 |
mvn install |
上述命令会构建所有模块并执行测试用例。
构建发布版本请运行:
1 |
mvn install -Pdistribution |
一旦构建完成会在distribution目录找到发布文件。
启动Keycloak
启动Keycloak前请先按照上述步骤构建,然后运行:
1 |
mvn -f testsuite/integration/pom.xml exec:java -Pkeycloak-server |
要从应用发布版本启动Keycloak,请先按照上述步骤构建,然后运行:
1 2 3 |
tar xfz distribution/appliance-dist/target/keycloak-appliance-dist-all-<VERSION>.tar.gz cd keycloak-appliance-dist-all-<VERSION>/keycloak bin/standalone.sh |
要停止服务器请输入Ctrl + C。
帮助与文档
贡献
- 开发文档
- Keycloak黑客:如何成为Keycloak贡献者
- 测试用例:包括测试用例细节,如何在开发中快速运行Keycloak,以及一些测试工具(OTP生成、LDAP服务器、邮件服务器)
- 数据库测试:如何在不同的数据库平台上测试Keycloak。
- 更新数据库:如何改变Keycloak数据库。
- 开发者邮件列表:该邮件列表用来讨论Keycloak开发中遇到的问题。
开发资源
官方网站:http://keycloak.jboss.org/
开源地址:https://github.com/keycloak/keycloak
打赏支持我整理更多优质资源,谢谢!
打赏编辑
打赏支持我整理更多优质资源,谢谢!
任选一种支付方式