---
title: 公共访问控制
slug: docs/cn/sJCau5phE9y3-sqD9dg_r
description: 通过三种不同的选项控制公共访问，可将您的文档站点置于密码或 JWT 身份验证方法之后。
createdAt: 2020-11-19T17:32:03.000Z
---

默认情况下，公共 Space <u>没有任何身份验证方法</u>，但您可以选择并设置几种：

- **Space 范围密码**；
- [访客账户](docId\:mlpe5kbw014Xm_x0bWknb)，您可以手动创建电子邮件 + 密码组合并分发给用户；
- [魔法链接](docId\:mlpe5kbw014Xm_x0bWknb)，您可以输入特定电子邮件或整个域，用户将使用我们发送到其电子邮箱的链接进行验证；
- [私人账户](docId\:mlpe5kbw014Xm_x0bWknb)，您可以添加特定域以允许用户使用其电子邮件地址验证/创建账户
- [私人链接](docId\:mlpe5kbw014Xm_x0bWknb)，您可以生成私密链接并与用户和团队共享。可通过链接按用户组管理访问控制；
- [JWT](docId\:mlpe5kbw014Xm_x0bWknb)，您的开发团队将使用您在 UI 中提供的 secret key 生成一个 JWT，然后作为链接的一部分返回给我们。这是最容易管理的方式，但需要开发人员投入时间。
- [SAML](docId\:mlpe5kbw014Xm_x0bWknb)，当您有一个外部应用可以作为路由器跳转到您的空间域，因此公共门户只能由在 Google、Azure、Okta 等提供商中设置的成员访问。
***
# None
![](https://api.archbee.com/api/optimize/HCIek7I0UxvyNHQ0EFzVX-slmSYSK4wieisLB7g81MK-20250729-141235.png)
默认行为设置为 None，意味着其公开可用。您可以更改控制项以限制读者访问。

任何拥有链接的人都可以阅读内容。

链接是安全可分享的，因为它们是通过加密方式生成且不可猜测的。

当您希望对特定读者限制内容访问时，请尝试以下任一选项。
***
# 访客账户
![](https://api.archbee.com/api/optimize/HCIek7I0UxvyNHQ0EFzVX-XuaszCCH-r1vgCmbw6sGx-20250729-141410.png)
创建访客账户。任何拥有链接且拥有访客账户的人都可以阅读内容。访客账户在 Archbee 中不计入席位费用。
***
# 私人账户
![](https://api.archbee.com/api/optimize/HCIek7I0UxvyNHQ0EFzVX-SnZtrKikrE0DjOn_38AJQ-20250729-141521.png)
如果您将用户的电子邮件地址或域添加到下方列表，则他们将能够使用邮箱地址/密码在您的 space 中验证/创建账户。

任何拥有链接且账户匹配的人都可以阅读内容。账户在 Archbee 中不计入席位费用。
:::hint{type="info"}
具有活跃账户的用户列表将显示在“Active Accounts”窗口中。
:::
***
# Magic Link
![](https://api.archbee.com/api/optimize/HCIek7I0UxvyNHQ0EFzVX-oAIK6459-kragJpin95aE-20250729-141556.png)
如果您将用户的电子邮件地址或域添加到下方列表，则他们可以使用其电子邮箱地址验证访问您的 space。
任何拥有链接且账户匹配的用户都可以阅读内容。账户在 Archbee 中不计入席位费用。
***
# 私人链接
为特定用户组/团队生成私密链接。每个用户组/团队将拥有访问同一文档的专属链接，并且您可以通过这些链接管理访问控制。需要切断团队 1 的访问？删除与团队 1 关联的私密链接即可。
![](https://api.archbee.com/api/optimize/HCIek7I0UxvyNHQ0EFzVX-s-2hIJWG1r0-sPfAob_Cb-20250729-141700.png)
***
# JWT 的工作方式

## JWT - secret 访客认证

![](https://api.archbee.com/api/optimize/HCIek7I0UxvyNHQ0EFzVX-4sLYzb9cSClYA_JSj44ou-20250729-141747.png)

前往 Spaces 设置，并设置由您的服务器生成的 JWT secret 密钥

## JSON WEB Key 访客认证

![](https://api.archbee.com/api/optimize/HCIek7I0UxvyNHQ0EFzVX-IOipg_ftVicxds_qMXSak-20250729-141831.png)

前往 Spaces 设置，并设置 JSON WEB Key Set URL。JSON Web Key Set (JWKS) URL 是服务器以 JSON 格式发布其公钥的 URL 端点。

JWKS URL 通常指向一个 JSON 文档，其中包含用于验证签名的加密密钥数组。

当 Archbee 接收到 JWT 时，可以从 JWKS URL 获取相应的公钥，并使用它验证 JWT 的签名，确保令牌未被篡改，且确实由受信任方签发。

JWKS URL 为客户端提供了一种标准化方式，以安全且可扩展的方式获取验证 JWT 签名所需的公钥。

这是一个示例 `jwks.json` 文件：

```json
{
	"keys": [{
		"kid": "1234example=",
		"alg": "RS256",
		"kty": "RSA",
		"e": "AQAB",
		"n": "1234567890",
		"use": "sig"
	}, {
		"kid": "5678example=",
		"alg": "RS256",
		"kty": "RSA",
		"e": "AQAB",
		"n": "987654321",
		"use": "sig"
	}]
}
```

## 生成 JWT token

使用以下示例之一生成 JWT token。

您还需要将 URL 替换为文档站点的子域。

```nodejs
const sign = require('jsonwebtoken').sign;

exports.buildArchbeeLoginURL = function() {
  // Optional user credentials that you want to send back to Archbee
  const user = {
    name: 'John',
    email: 'Wick',
  };
  //create a signed token out of the user credentials with the
  //secret you set in Archbee
  const jwtToken = sign(user, '<archbeeJwtSecret>');
  //yourdomain is set in the Custom Domain tab
  const archbeeUrl = 'https://yourdomain.com';
 
  //create the complete URL containing the signed token that you'll send back to Archbee
  return `${archbeeUrl}?jwt=${jwtToken}&reload`;
};
```

以下是使用 .NET 生成 JWT token 的示例：[https://github.com/dragosbulugean/archbee-jwt-dotnet](https://github.com/dragosbulugean/archbee-jwt-dotnet)﻿

```javascript
using JWT;
using JWT.Algorithms;
using JWT.Serializers;

var payload = new Dictionary<string, object>
{
    { "name", "John Wick" },
    { "email", "john.wick@matrix.com" }
};
const string secret = "TW9zaGVFcmV6UHJpdmF0ZUtleQ";

IJwtAlgorithm algorithm = new HMACSHA256Algorithm(); // symmetric
IJsonSerializer serializer = new JsonNetSerializer();
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);

var jwtToken = encoder.Encode(payload, secret);
var archbeeLink = $"https://docs.yourcompany.com/?jwt={jwtToken}&reload";

Console.WriteLine($"JWT Token: {jwtToken}");
Console.WriteLine($"Archbee Link: {archbeeLink}");
```

:::hint{type="info"}
JWT token 在 Preview/Staging 中会被跳过
:::

***

# SAML - Security Assertion Markup Language

![](https://api.archbee.com/api/optimize/HCIek7I0UxvyNHQ0EFzVX-Jo-LIF0lRgF1NC3d0BYkK-20250729-141906.png)

SAML 可以像团队集成一样为公共空间访问进行配置，请参阅[SAML 集成](docId\:aJ5ZQS2F_7e5xfRj5az9d)以获取有关设置每个提供商的更详细步骤。

请注意，只需要 metadata URL 作为输入。此外，我们假定该空间已托管在自定义域上。

以这种方式，发布的空间链接将通过新的 SAML 应用路由；因此，仅在提供商应用中设置的成员可以访问公共门户。

### 如何将 SAML 设置为公共访问控制

::::WorkflowBlock
:::WorkflowBlockItem
前往 Azure Services -> Microsoft Entra ID -> "+Add" -> App registration

选择 "Accounts in this organizational directory only -Single tenant"，并将来自 Archbee Space Settings -> Public Access Control -> SAML 的 CallBack URL 粘贴到 "Redirect URI" 中，如下图所示，选择 Web auth：

::Image[]{src="https://api.archbee.com/api/optimize/bNBm7nPJgXjbjLyfbHNh2/3UT5owvW3hIctm8WvFS5p_image.png" size="50" width="1746" height="1304" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
点击 "Register"
:::

:::WorkflowBlockItem
在 Azure 中新创建的应用上，前往 "Endpoints"，并将 Azure App 中的 "Federation metadata document" 复制到 Archbee Space Settings -> Public Access Control -> SAML 中的 "Set SAML Metatada URL"

::Image[]{src="https://api.archbee.com/api/optimize/bNBm7nPJgXjbjLyfbHNh2/tmIsl_WC_b8Gg53we8F7w_image.png" size="60" width="2272" height="1216" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
Archbee 中将生成唯一的 Entity ID，将 Azure App - Expose an API -> Add -> Fill Up the URL -> Save 中的 "[api://PUBLISHED](#)..." 链接复制过去

::Image[]{src="https://api.archbee.com/api/optimize/bNBm7nPJgXjbjLyfbHNh2/1MpmJaW_2e-NQvI7TOKxd_image.png" size="34" width="782" height="1388" position="center" showCaption="false"}
:::

:::WorkflowBlockItem
前往您的 Archbee 空间并重新发布
:::

:::WorkflowBlockItem
尝试访问链接并测试 SAML 身份验证
:::
::::

# 预览设置

:::hint{type="warning"}
此功能允许您在上线前，在受控的预览环境中模拟身份验证设置。
:::

## 目的

启用此设置以将`身份验证保护应用到预览环境`，限制仅`内部用户`访问。这有助于验证您的身份验证配置、用户访问流程和保护设置`而不会将更改暴露给公众`。

## 如何启用

- 在 Space Settings 中导航到 Public Access Control 部分
- 选择任一身份验证方法
- 关闭`预览设置`
- 将更改发布到 Preview 并测试身份验证

![](https://api.archbee.com/api/optimize/HCIek7I0UxvyNHQ0EFzVX-9qT4lqJHCgiQZ-OIc5Am5-20250729-142003.png)

# 多重身份验证

多重身份验证功能允许您为访问文档门户启用多种身份验证方式。这为用户提供了灵活性并提高了可访问性。

## 工作原理

:::hint{type="success"}
您可以在 Public Access Control 设置中同时切换多个身份验证方法。访问您的门户的用户将能够使用任一启用的方法进行身份验证。
:::

## 使用示例

如果您同时启用**私有链接** 和 **密码**, 用户可以通过以下任一方式访问您的文档：

- 您与他们共享的安全私有链接
- 或您设置的通用密码

![](https://api.archbee.com/api/optimize/HCIek7I0UxvyNHQ0EFzVX-_rgZR3y82yCV8ScSC0MQH-20250729-143204.png)

:::hint{type="warning"}
只有符合任一启用的身份验证方式的用户才能获得访问权限。您可以随时通过 Public Access Control 设置中的切换开关禁用任一方法。
:::



