跳到主要内容

安全

本文内容

身份认证

授权

本文简要介绍如何在 SnapDevelop 中配置应用程序的身份认证和角色授权。

身份认证

您可以右键点击设计器项目,然后选择 安全 菜单,在 安全 选项卡上选择 启用身份认证

对于身份认证,当前您可以选择使用 JWT 认证、API Key 认证、或者 OAuth2.0 认证。

  • JWT:基于 JSON Web Token(JWT)的认证机制,通过令牌(Access Token)方式完成用户身份校验。支持使用系统内置的 Token 生成与验证功能,或对接外部身份认证服务(如 Azure AD、企业统一身份平台等),适用于应用内认证或与企业现有认证体系集成的场景。
  • API Key:使用固定的 Key 进行验证,简单易用,但安全性依赖传输层(HTTPS)保护。适合测试环境或无需复杂认证的外部 API。
  • OAuth2.0:基于 OAuth 2.0 标准协议的授权机制,通过访问令牌(Access Token)控制对 API 资源的访问。适合需要与第三方系统或平台集成的场景,支持多种授权模式(如授权码模式、客户端凭证模式等),可与 JWT 结合使用以实现更安全、标准化的身份认证与授权流程。

启用身份验证后,可以点击 添加认证 配置一个或多个认证,并选择其中一个为默认认证。

JWT 认证

系统通过签名 Token 完成用户身份校验。

  • 登录 API

    指定用户登录接口,用于验证用户名和密码并生成 JWT Token。

    支持选择系统内置接口(例如 Login)或第三方外部服务。

  • 获取用户信息 API

    指定获取用户信息接口,用于验证 Token 并返回用户信息。

    支持选择系统内置接口(例如 GetUserInfo)或第三方外部服务。

  • 算法

    支持选择如 HS256HS384HS512 等常见 JWT 签名算法。

  • 密钥

    用于签发和验证 Token 的密钥,可以随机生成。

    原始:密钥的二进制形式,适用于内部计算机系统处理。

    Base64 编码:将二进制密钥转换为文本格式,便于通过文本协议传输或存储。

  • 过期时间

    设置 Token 的有效期,例如2小时。

  • 添加位置

    请求头

    请求头名称:指定哪个字段用于传递特定信息,默认值为 Authorization。

    请求头前缀:附加在字段值前的标识符,默认值为 Bearer。

    查询参数

    查询参数名称:URL 中 ? 后面的参数名,通常用于在 GET 请求中传递数据。

image-20251217153628465

API Key 认证

系统通过在请求中传递固定的键值对来进行身份验证。

  • 颁发者

    指定颁发 API Key 的服务器。目前只支持内部服务器。

  • 指定 API Key 的字段名称,默认值为 X-API-Key,可自定义。

  • 配置 API Key 的具体值。客户端必须在请求中提供相同的值。

  • 添加位置

    将API Key放在请求头(请求的HTTP头部,以保证请求安全)或者查询参数(URL的查询参数,便于在GET请求中传递)。

image-20251217153729680

OAuth2.0 认证

系统通过 OAuth 2.0 授权流程获取访问令牌访问受保护资源。

  • 认证服务商

    选择用于授权登录的平台(如微信、QQ、华为、阿里、GitLab、谷歌、GitHub、微软账户等)。

接下来的选项将根据 认证服务商 的不同而有所不同。

下面以 微信 为例进行说明。

  • App ID

    平台分配给应用的唯一标识,用于识别你的应用。

  • App Secret

    平台分配给应用的密钥,用于与认证服务商进行安全通信,请妥善保管。

  • 登录 API

    用户点击登录时跳转的授权地址,用于获取授权码或访问令牌。

    支持选择系统内置接口(例如LoginByWeChat)或第三方外部服务。

  • 登录凭证校验地址

    用于验证授权码或 Token的合法性,通常在登录回调后调用。

  • 获取用户信息地址

    用于通过 Token获取用户详细信息(如昵称、头像、用户ID等)。

    image-20251217162014517

下面以 QQ 为例进行说明。

  • 授权模式

    选择使用的授权类型,用于控制登录流程方式。

    授权码(Authorization Code):用户登录后由认证平台返回授权码,再由服务器换取Token,安全性更高,适用于网页端、服务器端应用。

    隐式(Implicit):用户登录后直接在浏览器端获取Token,无服务器中转,流程简单,但安全性相对较低,常用于纯前端应用。

  • 客户端 ID

    服务商分配的应用编号,用于识别你的应用。

  • 密钥

    与客户端ID配套的安全密钥,用于服务端与认证平台安全通信。

  • 认证地址

    用户跳转进行授权登录的URL。

  • 获取令牌地址

    用于根据授权码或凭证换取访问令牌的接口地址。

  • 回调模式

    指定授权完成后Token回传方式(前端回调、后端回调或自定义处理)。

  • 回调地址

    授权登录完成后跳转返回的URL,用于接收授权码或 Token。

  • 登录 API

    用户发起登录时调用的API,用于对接OAuth授权流程。支持选择系统内置接口(例如LoginByCode)或第三方外部服务。

  • 返回页面地址

    登录成功后最终跳转的用户访问页面地址。

  • 获取用户信息地址

    通过 Token获取用户资料的接口URL。

  • 范围(Scope)

    指定授权访问的权限范围。

    openid:启用OpenID Connect登录,用于唯一标识用户身份并获取基本认证信息。

    profile:请求访问用户的公开个人信息,如昵称、头像、性别等。

    email:请求获取用户邮箱信息,例如email地址和验证状态。

  • 添加位置

    声明访问令牌在请求中的放置方式(请求头或URL查询参数)。

  • 请求头名称

    指定Token放在请求头中时使用的Header字段名。

  • 请求头前缀

    在请求头中附加Token时的前缀,例如 Bearer。

    image-20251217171839554

授权

启用和添加身份认证后,您可以定义多个角色,实现基于角色的访问控制。

您还可以在每个 API 的设置页面中决定哪些角色可以调用此接口,实现对每个 API 单独控制访问权限。

在项目安全页中点击 添加角色,输入角色名称和描述,点击 确认。可以添加一个或多个角色,并选择其中一个为默认角色。

image-20251217161113817

认证视图与配置

启用身份认证后,系统会自动创建以下视图文件,用来实现与身份验证相关的界面和逻辑:

  1. Login.sdv:该文件用于实现用户登录界面,用户在此界面输入他们的凭据(如用户名和密码),并提交以进行身份验证。
  2. Register.sdv:该文件用于用户注册界面,允许新用户创建一个帐户,输入必要的注册信息,并提交到服务器。

这些视图文件通过预设的模板和逻辑,帮助开发者快速实现身份验证相关功能,而无需手动创建这些界面。

image-20251217170953788

启用身份认证后,表达式设计器中的相关认证函数将可选。

image-20251217171228968

启用身份认证后,在生成项目时将生成 Identity 项目,并添加认证数据库配置,用于将持久化数据存储在数据库中。

image-20251217172219593

您可以在 生成配置 页面查看及配置认证数据库。

image-20251217171418116