ory / hydra-sdk
ORY Hydra SDK
Requires
- php: >=5.4
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- v1.1.1
- v1.1.0
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v1.0.0-rc.16
- v1.0.0-rc.15
- v1.0.0-rc.14
- v1.0.0-rc.12
- v1.0.0-rc.11
- v1.0.0-rc.10
- v1.0.0-rc.9+oryOS.10
- v1.0.0-rc.8+oryOS.10
- v1.0.0-rc.7+oryOS.10
- v1.0.0-rc.6+oryOS.10
- v1.0.0-rc.5+oryOS.10
- v1.0.0-rc.4+oryOS.9
- v1.0.0-rc.3+oryOS.9
- v1.0.0-rc.2+oryOS.9
- v1.0.0-rc.1+oryOS.9
- v1.0.0-beta.9
- v1.0.0-beta.8
- v1.0.0-beta.7
- v1.0.0-beta.6
- v1.0.0-beta.5
- v1.0.0-beta.4
- v1.0.0-beta.3
- v1.0.0-beta.2
- v1.0.0-beta.1
- v0.11.x-dev
- v0.11.14
- v0.11.12
- v0.11.10
- v0.11.9
- v0.11.7
- v0.11.6
- v0.11.4
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- v0.0.1
- dev-fix-834
- dev-unstaged
This package is auto-updated.
Last update: 2024-09-20 12:47:11 UTC
README
聊天 | 讨论 | 通讯
指南 | API 文档 | 代码文档
支持此项目!
开源工作,Ory 正在招聘!
Ory Hydra 是一个经过加固的、OpenID 认证的 OAuth 2.0 服务器和 OpenID Connect 提供者,针对低延迟、高吞吐量和低资源消耗进行了优化。Ory Hydra 不是 一个身份提供者(用户注册、用户登录、密码重置流程),而是通过一个 登录和同意应用程序 连接到您现有的身份提供者。用不同的语言实现登录和同意应用程序非常简单,并提供了一些常见语言的示例应用程序(Node)和 SDK。
Ory Hydra 可以使用 Ory Kratos 作为其身份服务器。
Ory Hydra 在 Ory 网络
Ory 网络 是使用 Ory 服务最快、最安全且无后顾之忧的方式。 Ory OAuth2 & OpenID Connect 由 Ory Hydra 开源联合服务器提供支持,并且完全兼容 API。
Ory 网络提供了现代端到端安全的基础设施
- 身份和凭证管理可扩展到数十亿用户和设备
- 适用于 passkey、生物识别、社交、SSO 和多因素认证的注册、登录和账户管理流程
- 预先构建的登录、注册和账户管理页面和组件
- OAuth2 和 OpenID 提供者,用于单点登录、API 访问和机器对机器授权
- 基于 Google 的 Zanzibar 模型进行低延迟权限检查,并内置 Ory 权限语言支持
它是完全管理的、高可用的、开发者友好且符合规定的!
- 符合 GDPR 的安全存储,具有数据本地化
- 云原生 API,与 Ory 的开源服务器兼容
- 全面的行政工具,包括基于网络的 Ory 控制台和 Ory 命令行界面(CLI)
- 广泛的文档、简单的示例和易于遵循的指南
- 合理的、基于使用的 定价
今天注册一个 免费开发者账户!
Ory 网络 hybrid 支持计划
Ory为Ory网络混合模式提供支持计划,包括私有云部署的Ory。如果您有自托管解决方案并需要帮助,请考虑支持计划!Ory团队在云计算方面拥有多年的经验。Ory提供的是唯一官方合格支持计划。更多信息请参阅 网站 或 预约会议!
开始使用
您可以使用 Docker 在本地运行Ory Hydra,或者使用Ory CLI尝试Ory Hydra
# This example works best in Bash bash <(curl https://raw.githubusercontent.com/ory/meta/master/install.sh) -b . ory sudo mv ./ory /usr/local/bin/ # Or with Homebrew installed brew install ory/tap/cli
创建一个新项目(您也可以使用 Docker)
ory create project --name "Ory Hydra 2.0 Example"
project_id="{set to the id from output}"
并按照以下快速简单的步骤进行。
OAuth 2.0 客户端凭证/机对机
创建OAuth 2.0 客户端,并运行OAuth 2.0 客户端凭证流程
ory create oauth2-client --project $project_id \ --name "Client Credentials Demo" \ --grant-type client_credentials client_id="{set to client id from output}" client_secret="{set to client secret from output}" ory perform client-credentials --client-id=$client_id --client-secret=$client_secret --project $project_id access_token="{set to access token from output}" ory introspect token $access_token --project $project_id
OAuth 2.0 授权码 + OpenID Connect
立即尝试OAuth 2.0 授权码授权!
在同意屏幕接受权限 openid 和 offline_access 后,Ory刷新并更新OpenID Connect ID令牌,
ory create oauth2-client --project $project_id \ --name "Authorize Code with OpenID Connect Demo" \ --grant-type authorization_code,refresh_token \ --response-type code \ --redirect-uri http://127.0.0.1:4446/callback code_client_id="{set to client id from output}" code_client_secret="{set to client secret from output}" ory perform authorization-code \ --project $project_id \ --client-id $code_client_id \ --client-secret $code_client_secret code_access_token="{set to access token from output}" ory introspect token $code_access_token --project $project_id
什么是Ory Hydra?
Ory Hydra是OAuth 2.0授权框架和OpenID Connect Core 1.0的服务器实现。现有的OAuth2实现通常以库或SDK的形式提供,例如node-oauth2-server 或 Ory Fosite,或者作为具有用户管理和用户界面的完整功能身份解决方案,例如 Keycloak。
在不理解整个规范的情况下实现和使用OAuth2具有挑战性,易于出错,即使在使用SDK的情况下。Ory Hydra的主要目标是使OAuth 2.0和OpenID Connect 1.0更容易访问。
Ory Hydra实现了OAuth2和OpenID Connect 1.0中描述的流程,而不强迫您使用“Hydra用户管理”或某些模板引擎或预定义的前端。相反,它依赖于HTTP重定向和加密方法来验证用户同意,允许您使用Ory Hydra与任何认证端点一起使用,无论是Ory Kratos、authboss、User Frosting还是您自己的Java认证。
谁在使用它?
Ory社区立足于个人、公司和维护者。Ory团队感谢所有参与的人——从提交错误报告和功能请求到贡献补丁和文档。Ory社区拥有超过33,000名成员,并正在迅速增长。Ory堆栈每月保护超过60亿个API请求,拥有超过40万个活跃服务节点。这一切都离不开每一位成员的贡献!
以下列表展示了与我们同行并为我们生态系统做出卓越贡献的公司。如果您认为您的公司值得在此处获得一席之地,请现在通过office@ory.sh与我们联系!
感谢所有个人贡献者
*在生产中使用Ory的主要项目之一。
OAuth2和OpenID Connect:开放标准!
Ory Hydra实现了IETF设定的开放标准
- OAuth 2.0授权框架
- OAuth 2.0威胁模型和安全考虑
- OAuth 2.0令牌撤销
- OAuth 2.0令牌验证
- OAuth 2.0原生应用
- OAuth 2.0动态客户端注册协议
- OAuth 2.0动态客户端注册管理协议
- OAuth公共客户端通过代码交换的证明密钥
- OAuth 2.0客户端身份验证和授权授予的JSON Web令牌(JWT)配置文件
以及开放ID基金会
- OpenID Connect核心1.0
- OpenID Connect发现1.0
- OpenID Connect动态客户端注册1.0
- OpenID Connect前端通道注销1.0
- OpenID Connect后端通道注销1.0
OpenID Connect 认证
Ory Hydra是开放ID基金会认证的OpenID提供者(OP)。
以下OpenID配置文件已认证
- 基本OpenID提供者(响应类型
code) - 隐式OpenID提供者(响应类型
id_token,id_token+token) - 混合OpenID提供者(响应类型
code+id_token,code+id_token+token,code+token) - OpenID提供者发布配置信息
- 动态OpenID提供者
为了获得认证,我们部署了参考用户登录和同意应用(未修改)和Ory Hydra v1.0.0。
快速入门
本节是使用Ory Hydra的入门指南。还有深入文档可供参考
安装
前往Ory开发者文档了解如何在Linux、macOS、Windows和Docker上安装Ory Hydra,以及如何从源代码构建Ory Hydra。
生态系统
在设计架构时,我们基于以下几个指导原则构建Ory
- 最小依赖
- 在任何地方运行
- 无需努力即可扩展
- 最小化人为和网络错误的空间
Ory的架构设计用于在Kubernetes、CloudFoundry、OpenShift等容器编排系统上运行最佳。二进制文件小(5-15MB),适用于所有流行的处理器类型(ARM、AMD64、i386)和操作系统(FreeBSD、Linux、macOS、Windows),且无系统依赖(Java、Node、Ruby、libxml、...)。
Ory Kratos:身份和用户基础设施及管理
Ory Kratos是一个API优先的身份和用户管理系统,它根据云架构最佳实践构建。它实现了几乎所有软件应用程序都需要处理的核心用例:自助登录和注册、多因素身份验证(MFA/2FA)、账户恢复和验证、个人资料和账户管理。
Ory Hydra:OAuth2 & OpenID Connect 服务器
Ory Hydra 是一个 OpenID Certified™ OAuth2 和 OpenID Connect 提供者,可以通过编写一个微小的“桥梁”应用程序轻松连接到任何现有的身份系统。它完全控制用户界面和用户体验流程。
Ory Oathkeeper:身份 & 访问代理
Ory Oathkeeper 是一个 BeyondCorp/Zero Trust 身份与访问代理 (IAP),具有可配置的认证、授权和请求变异规则,适用于您的网络服务:验证 JWT、访问令牌、API 密钥、mTLS;检查包含的主题是否允许执行请求;将结果内容编码到自定义头部(X-User-ID)、JSON Web 令牌等!
Ory Keto:作为服务器的访问控制策略
Ory Keto 是一个策略决策点。它使用一组类似于 AWS IAM 策略的访问控制策略,以确定主题(用户、应用程序、服务、汽车等)是否被授权在资源上执行特定操作。
安全性
为什么我应该使用 Ory Hydra?实现两个 OAuth2 端点并不难,而且有大量的 SDK 供您选择!
OAuth2 及相关规范超过 400 页。实现 OAuth2 很容易,但要正确实现却很难。Ory Hydra 被全球各地的公司所信任,拥有活跃的社区,并且每天在生产环境中处理数百万次请求。当然,我们还编制了一份安全指南,其中包含更多关于密码学和安全概念的详细信息。现在就阅读 安全指南。
披露漏洞
如果您认为发现了安全漏洞,请勿在论坛、聊天或 GitHub 上公开发布。您可以在我们 security.txt 中找到所有有关负责任披露的信息。
基准测试
我们的持续集成运行一系列针对 Ory Hydra 的基准测试。您可以在 这里 找到结果。
遥测
我们的服务收集了汇总的、匿名化的数据,您可以选择关闭这些数据。点击 这里 了解更多信息。
文档
指南
完整的 Ory Hydra 文档可在 这里 获取。
HTTP API 文档
HTTP API 的文档可在 这里 查看。
升级和变更日志
新版本可能会引入破坏性更改。为了帮助您识别和整合这些更改,我们在 CHANGELOG.md 中记录了这些更改。
命令行文档
运行 hydra -h 或 hydra help。
开发
我们热爱所有贡献!请阅读我们的 贡献指南。
依赖项
您需要 Go 1.13+ 并开启 GO111MODULE=on(对于测试套件)
- Docker 和 Docker Compose
- Makefile
- NodeJS / npm
您可以在 Windows 上开发 Ory Hydra,但请注意,所有指南都假设您使用类似 bash 或 zsh 的 Unix shell。
代码格式化
您可以使用 make format 对所有代码进行格式化。我们的 CI 会检查您的代码是否正确格式化。
运行测试
您可以运行三种类型的测试
- 短测试(不需要像 PostgreSQL 这样的 SQL 数据库)
- 常规测试(需要 PostgreSQL、MySQL、CockroachDB)
- 端到端测试(需要数据库,并使用测试浏览器)
您可以使用 makefile 运行所有上述测试。请参阅下面的命令。
Makefile 命令
# quick tests make quicktest # regular tests make test test-resetdb # end-to-end tests make e2e
短测试
建议您使用 make 文件通过 make quicktest 运行测试,但您仍然可以使用 go test 命令。
请注意:
所有测试都在内存数据库 sqlite 上运行,因此需要使用 -tags sqlite 编译标签。
短测试运行得相当快。您可以一次性测试所有代码
go test -v -failfast -short -tags sqlite ./...
或测试特定模块
go test -v -failfast -short -tags sqlite ./client
或特定测试
go test -v -failfast -short -tags sqlite -run ^TestName$ ./...
常规测试
常规测试需要设置数据库。我们的测试套件可以直接与 Docker 一起工作(使用 ory/dockertest),但我们鼓励使用 Makefile。使用 dockertest 会导致系统上的 Docker 镜像数量增加,并且相当慢。相反,我们建议这样做
make test
请注意,每次运行 make test 时,make test 都会重新创建数据库。如果您正在尝试修复非常具体的问题并需要不断进行数据库测试,这可能会很烦人。在这种情况下,我们建议您使用以下命令初始化数据库:
make test-resetdb export TEST_DATABASE_MYSQL='mysql://root:secret@(127.0.0.1:3444)/mysql?parseTime=true&multiStatements=true' export TEST_DATABASE_POSTGRESQL='postgres://postgres:secret@127.0.0.1:3445/postgres?sslmode=disable' export TEST_DATABASE_COCKROACHDB='cockroach://root@127.0.0.1:3446/defaultdb?sslmode=disable'
然后您可以根据需要多次运行 go test
go test -p 1 ./... # or in a module: cd client; go test .
端到端测试
端到端测试使用 Cypress 来运行完整的浏览器测试。您可以使用以下命令执行这些测试:
make e2e
运行器不会显示浏览器窗口,因为它在 CI 模式(后台)中运行。这使得调试这类测试非常困难,但幸运的是,您可以在浏览器中运行端到端测试,这有助于调试!只需运行
./test/e2e/circle-ci.bash memory --watch # Or for the JSON Web Token Access Token strategy: # ./test/e2e/circle-ci.bash memory-jwt --watch
或者如果您想测试其中一个数据库
make test-resetdb export TEST_DATABASE_MYSQL='mysql://root:secret@(127.0.0.1:3444)/mysql?parseTime=true&multiStatements=true' export TEST_DATABASE_POSTGRESQL='postgres://postgres:secret@127.0.0.1:3445/postgres?sslmode=disable' export TEST_DATABASE_COCKROACHDB='cockroach://root@127.0.0.1:3446/defaultdb?sslmode=disable' # You can test against each individual database: ./test/e2e/circle-ci.bash postgres --watch ./test/e2e/circle-ci.bash memory --watch ./test/e2e/circle-ci.bash mysql --watch # ...
运行脚本后,将出现一个 Cypress 窗口。点击“运行所有规范”按钮!
这些测试的代码位于 ./cypress/integration、./cypress/support 和 ./cypress/helpers。您看到的网站位于 ./test/e2e/oauth2-client。
OpenID Connect 合规性测试
要运行 Ory Hydra 以符合 OpenID Connect 合规性套件,请运行
$ test/conformity/start.sh --build
然后在单独的 shell 中
$ test/conformity/test.sh
运行这些测试将需要相当长的时间,这就是为什么它们不是 CI 管道的一部分。
构建Docker
您可以使用以下命令构建开发 Docker 镜像:
make docker
运行Docker Compose 快速入门
如果您希望将您的代码更改与任何 docker-compose 快速入门文件进行比较,请运行
make docker
docker compose -f quickstart.yml up # ....
添加新的迁移
mkdir persistence/sql/src/YYYYMMDD000001_migration_name/- 将迁移文件放入此目录中,遵循标准命名约定。如果您希望在单独的事务中执行迁移的不同部分,请添加分隔符(带有文本
--split的行),在需要的位置添加。为什么可能需要这样做已在 gobuffalo/fizz#104 中解释。 - 运行
make persistence/sql/migrations/<migration_id>以生成迁移片段。 - 如果更新导致迁移的片段数少于已生成的数量,请运行
make persistence/sql/migrations/<migration_id>-clean。这与带有正确参数的rm命令等效,但具有更好的自动补全。 - 在提交生成的迁移片段之前,运行上述清洁命令并生成迁移片段的新副本,以确保
sql/src和sql/migrations目录一致。
库和第三方项目
官方
社区
开发者博客
- 访问 Ory 博客 了解有关 Ory Hydra 和 Ory 生态系统的指南、教程和文章。
