首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

学习如何引导 Hydra-1

学习如何引导 Hydra-1

OAuth 2.0 和 OpenIDOAuth 2.0 和 OpenID 的基本概念体现在用户想对一个应用程序(“Application                X”)执行某个操作时。访问该应用程序需要访问一个公司或企业(“Service                Z”)的帐户,而对这个帐户的访问需要代表用户进行授权。为了以良好且安全的方式允许授权(不违背用户对直接请求其凭证的信任),您可以将诸如 Hydra                之类的工具集成到 Service Z 中,使 Application X 能代表用户发出经过授权的请求。
了解 Hydra需要进一步了解 OAuth 2.0?
阅读我们广受欢迎的系列。

如果您还不理解运行 OAuth 2.0 服务器的用例,那么理解为什么像 Hydra 这样的工具必不可少在一开始时可能并不那么容易。简言之,Hydra                是一个非常简单的 OAuth 2.0 授权服务器。这种身份验证服务的用例的最佳示例(或您想要这个工具的最明显原因)是,您创建了一个                API,并想让第三方能够访问您的 API(例如代表用户访问)。
下图可以很好地帮助理解基本概念,并给出了授权代码流的高级概述。
图 1:Hydra 流程点击查看大图
有一些帮助您了解 OAuth2.0 和 OpenID Connect 的资源,其中包括这个来自 DigitalOcean 的指南。另外,这个指南展示了人们通常如何将 OAuth 2.0 集成到移动应用程序中,还提供了在 Facebook 或 Google                    等网站上遇到这种情况的示例场景。

安装 Hydra要运行并安装 Hydra,有 3 种基本方式。就个人而言,我推荐利用 Docker 映像或容器来使用并运行 Hydra,这也是本文中运行该服务器的方式。考虑到以后的开发者,运行 Hydra                的其他方式包括从官方版本下载一个二进制文件,或从源代码进行构建。因为我们也将在我们的主机上运行 Hydra                来连接到服务器,所以您也应该将它安装到本地。但是,如果您习惯从连接到 Hydra 服务器的 Docker                    容器运行所有命令,则没有必要将它安装到本地。从二进制文件安装相对容易一些,只需要从项目版本页下载各自的版本并将它们安装在                PATH 中的某处。或者如果您使得二进制文件成为可执行文件,那么可以直接调用它。
在 macOS 上,让 PATH 变得可执行的方式非常简单:
延伸阅读



chmod +x hydra-darwin-amd64
./hydra-darwin-amd64 -h
要从源代码进行构建,需要安装并正确配置 (配置                PATH 并确保 go get 工作正常)。来自 Hydra gitbooks                    页面的指令非常简单:。
通过 Docker 设置 Hydra因为设置 Hydra 服务器应该是与应用程序无关的,所以大部分步骤都来自官方指南。出于本文的目的,我们将使用 Docker,因为已有一些相关的                Docker 映像,而且它使我们能轻松地运行该服务器,使我们能理解该流程的工作原理而无需担心相关细节。
在启动 Hydra 服务器之前,我们想启动一个数据库。 或  都是不错的数据库选择。要启动您的数据库,您需要在运行该服务器之前使用一个内置 migrate                命令来迁移并创建各种模式。为了演示如何使用                Hydra,我们将使用一个内存型数据库,所以我们暂时无需担心迁移过程。请注意,使用这个数据库只是为了帮助理解,它并不适用于所有生产用例。另请注意,我们在整个过程中使用了各种各样的标志(比如                --dangerous-force-http),使用它们也是为了完成测试和方便理解。
要启动并运行 Hydra,您需要运行以下命令:
1
2
3
4
5
6
7
8
9
docker run -d \
--name hydra-server \
-p 9000:4444 \
-e SYSTEM_SECRET=$SYSTEM_SECRET \
-e DATABASE_URL=$DATABASE_URL \
-e ISSUER=https://localhost:9000/ \
-e CONSENT_URL=http://localhost:3000/consent \
-e FORCE_ROOT_CLIENT_CREDENTIALS=admin:admin-password \
oryd/hydra:latest --dangerous-force-http --dangerous-auto-logon --disable-telemetry




使用 SSL 的说明尽管我们没有对本文的设置使用任何安全措施(这有点讽刺意味,因为这是一个安全应用程序),但我们不使用安全措施是为了让大家能理解使同意流工作的最基本流程。我们使用的许多标志和选项不应该用于测试或学习以外的用途。例如,推荐对                Hydra 服务器(以及其他许多实体)使用 SSL。有关在生产环境中运行此程序的待办事项的完整列表,请阅读官方文档。要使用                SSL(这是一个不错的主意),需要在启动 Hydra 服务器时有一个密钥和证书。为此,最简单的方法是根据指南(比如这个来自  的指南)在您的主机上使用 。
在这一步中,需要访问 Hydra 服务器,以便可以在以后设置示例客户端。因为我们没有从已在运行的 Docker                容器这么做,所以我们有多种设置示例客户端的方法。一种方法是启动另一个拥有 Hydra 的 Docker 容器,并连接到容器 shell,而不是运行                Hydra 服务器并连接到该服务器。该方法很不错,但是为了展示其他方法,我们将在主机上运行 Hydra 并将它连接到 Docker 容器。
本地使用 Hydra从版本页下载一个 Hydra 二进制文件并将它添加到您的 $PATH。从这里,您能够连接到已在主机上运行的 Docker                化的 Hydra 容器:
hydra connect --url https://localhost:9000 --id admin --secret admin-password
为确保它是有效的,可以创建和验证一个令牌:
hydra token validate --skip-tls-verify $(hydra token client --skip-tls-verify)
接下来,设置 Hydra 客户端和策略:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
hydra clients create --skip-tls-verify \
  --id consent-app \
  --secret consent-secret \
  --name "Consent App Client" \
  --grant-types client_credentials \
  --response-types token \
  --allowed-scopes hydra.consent

hydra policies create --skip-tls-verify \
  --actions get,accept,reject \
  --description "Allow consent-app to manage OAuth2 consent requests."\
  --allow \
  --id consent-app-policy \
  --resources "rn:hydraauth2:consent:requests:<.*>" \
  --subjects consent-app




备注:此刻所有这些请求在理论上可在任何地方运行,比如 cURL,或者可以通过使用 Python 或任何 OAuth2 库来自动化和简化该流程。
返回列表