创建 OAuth 客户端
设置一个 OAuth 客户端,用于身份验证内容。
在创建 OAuth 消费者之前,我们需要为 OAuth 范围创建一个新角色和一个用户。
从 next-drupal 1.5
开始,用户角色用于 OAuth 范围。基于当前登录的用户,范围将自动处理预览。
1. 创建角色
- 访问
/admin/people/roles
。 - 点击**+ 添加角色**。
- 填写**角色名称**。例如:Next.js 站点。
2. 分配权限
接下来,将以下权限分配给新创建的角色。
- 绕过内容访问控制
- 发出子请求
- 查看用户信息
我们分配绕过内容访问控制权限是为了允许 Next.js 访问未发布的内容和修订版本。
此范围仅在从 Next.js 向 Drupal 发出身份验证请求时使用。
const articles = await drupal.getResource( "node--article", "dad82fe9-f2b7-463e-8c5f-02f73018d6cb", { withAuth: true, })
3. 创建用户
在 /admin/people/create
添加新用户,并**将所有将用于范围的角色分配给他们,包括管理员角色和我们上面创建的角色**。
4. 生成密钥
生成一对密钥来加密令牌。出于安全考虑,请将它们存储在文档根目录之外(web
目录)。
- 访问
/admin/config/people/simple_oauth
- 点击**生成密钥**为令牌生成加密密钥
- 填写**密钥目录**。例如,一个相对路径,如
../
- 点击**生成**
- 点击**保存配置**
您也可以使用 openssl
在您上面使用的目录中生成密钥
openssl genrsa -out private.key 2048 openssl rsa -in private.key -pubout > public.key
5. 创建消费者
- 访问/admin/config/services/consumer/add
- 填写以下值
- **标签**:
Next.js 站点
- **用户**:
选择我们创建的用户
- **密钥**:
您的密钥
- **范围**:
选择我们创建的角色
- 点击**保存**
重要:请注意客户端 ID(uuid)和密钥。这些将用作 Next.js 站点的环境变量。
6. 连接 Drupal
要将 Next.js 项目连接到 Drupal,我们使用环境变量。
在您的 .env.local
文件中填写以下变量。
.env.local
# Authentication (Bearer)DRUPAL_CLIENT_ID=DRUPAL_CLIENT_SECRET=
7. 更新 DrupalClient
更新 DrupalClient
以使用Bearer 身份验证标头。
lib/drupal.ts
import { DrupalClient } from "next-drupal"
export const drupal = new DrupalClient( process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, { auth: { clientId: process.env.DRUPAL_CLIENT_ID, clientSecret: process.env.DRUPAL_CLIENT_SECRET, }, })