安全
本文内容
本文简要介绍如何在 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)或第三方外部服务。
-
算法
支持选择如
HS256、HS384、HS512等常见 JWT 签名算法。 -
密钥
用于签发和验证 Token 的密钥,可以随机生成。
原始:密钥的二进制形式,适用于内部计算机系统处理。
Base64 编码:将二进制密钥转换为文本格式,便于通过文本协议传输或存储。
-
过期时间
设置 Token 的有效期,例如2小时。
-
添加位置
请求头
请求头名称:指定哪个字段用于传递特定信息,默认值为 Authorization。
请求头前缀:附加在字段值前的标识符,默认值为 Bearer。
查询参数
查询参数名称:URL 中 ? 后面的参数名,通常用于在 GET 请求中传递数据。

API Key 认证
系统通过在请求中传递固定的键值对来进行身份验证。
-
颁发者
指定颁发 API Key 的服务器。目前只支持内部服务器。
-
键
指定 API Key 的字段名称,默认值为 X-API-Key,可自定义。
-
值
配置 API Key 的具体值。客户端必须在请求中提供相同的值。
-
添加位置
将API Key放在请求头(请求的HTTP头部,以保证请求安全)或者查询参数(URL的查询参数,便于在GET请求中传递)。

OAuth2.0 认证
系统通过 OAuth 2.0 授权流程获取访问令牌访问受保护资源。
-
认证服务商
选择用于授权登录的平台(如微信、QQ、华为、阿里、GitLab、谷歌、GitHub、微软账户等)。
接下来的选项将根据 认证服务商 的不同而有所不同。
下面以 微信 为例进行说明。
-
App ID
平台分配给应用的唯一标识,用于识别你的应用。
-
App Secret
平台分配给应用的密钥,用于与认证服务商进行安全通信,请妥善保管。
-
登录 API
用户点击登录时跳转的授权地址,用于获取授权码或访问令牌。
支持选择系统内置接口(例如LoginByWeChat)或第三方外部服务。
-
登录凭证校验地址
用于验证授权码或 Token的合法性,通常在登录回调后调用。
-
获取用户信息地址
用于通过 Token获取用户详细信息(如昵称、头像、用户ID等)。

下面以 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。

授权
启用和添加身份认证后,您可以定义多个角色,实现基于角色的访问控制。
您还可以在每个 API 的设置页面中决定哪些角色可以调用此接口,实现对每个 API 单独控制访问权限。
在项目安全页中点击 添加角色,输入角色名称和描述,点击 确认。可以添加一个或多个角色,并选择其中一个为默认角色。

认证视图与配置
启用身份认证后,系统会自动创建以下视图文件,用来实现与身份验证相关的界面和逻辑:
- Login.sdv:该文件用于实现用户登录界面,用户在此界面输入他们的凭据(如用户名和密码),并提交以进行身份验证。
- Register.sdv:该文件用于用户注册界面,允许新用户创建一个帐户,输入必要的注册信息,并提交到服务器。
这些视图文件通过预设的模板和逻辑,帮助开发者快速实现身份验证相关功能,而无需手动创建这些界面。
启用身份认证后,表达式设计器中的相关认证函数将可选。

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

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