系统登录
概述
Dante Cloud 提供用户名密码、手机短信验证码、第三方系统社会化、Passkey 通行密钥等多种登录方式。同时,也支持为小程序等应用提供登录认证支持(为后端接口支持前端暂不支持体验)
[一]用户名密码登录
Dante Cloud 支持用户名密码登录方式。是通过自定义扩展 Spring Authorization Server,实现基于 OAuth2 的 密码 认证模式,来实现的用户名密码登录。
提示
- Spring Authorization Server 是基于 OAuth 2.1 协议的,在 OAuth 2.1 协议中已经不再支持
密码认证模式。之所以会自定义扩展密码认证模式,是为了兼容老客户以及老系统的使用模式。 - 所以在配置支持密码认证模式的客户端时,需要未该客户端配置
password认证模式

注意
- 为了防止登录敏感信息,例如:密码,在传输过程中被抓包,所以用户名密码登录以及验证码采取的前后端数据加密传输。
- Dante Cloud 前后端数据加密,采用数字信封技术,详情见【数字信封】。因此,需要在使用前进行“握手”(交换密钥),在未交换成功之前,所有输入框、按钮都禁止进行操作。
- 为了提升开放接口(即:/open/** 类型)的安全性,在
数字信封握手时,会同时验证 OAuth2客户端的有效性。如果验证失败或者数据库初始化时缺少必要的数据,那么就会提示【客户端验证失败错误】
[二]手机验证码登录
Dante Cloud 支持手机验证码方式。

提示
- Dante Cloud 提供了手机验证码登录
沙盒模式。即,如果暂时尚未开通短信接口,可以使用沙盒模式模拟手机验证码登录的整个过程。该过程除了没有真正向手机发送验证码外,所有过程都与实际过程一致。 - 手机验证码登录方式,也是采用自定义扩展 Spring Authorization Server 认证模式实现,并且与现有认证模式统一。登录时,统一采用
/oauth2/token接口获取 Token, - 需要为客户端配置
social_credentials认证模式,才允许该客户端使用手机验证码登录 - 因为涉及到自动注册的过程,所以需要需要为该类型的登录分配
默认角色,以便登录后有可以操作的内容。参见:【设置默认角色】
注意
在 Dante Cloud 真实的手机验证码登录过程中,如果用户使用的手机号码是第一次使用,那么首先会用该手机号码进行注册,然后再进行登录。这一过程与互联网应用逻辑类似。
如果您使用 Dante Cloud 作为企业内部系统使用,特别还涉及到组织机构等内容,请慎重考虑是否需要使用手机验证码登录。当然,可以考虑提前初始化内部人员相关信息,以规避注册过程。
[三]第三方系统社会化登录
第三方系统社会化登录,即利用用户在第三方系统中的账号,来登录 Dante Cloud 系统。这中登录方式,在互联网应用中颇为常见,例如:可以使用支付宝账号登录淘宝或者其它系统。
提示
- 第三方系统社会化登录本质上就是 OAuth2 协议中的
授权码模式,因此需要在第三方系统中先申请注册一个应用,用分配好的 clientId、clientSecret、redirectUrl 等信息配置在 Dante Cloud 中。然后,就可以使用该系统登录 Dante Cloud。 - Dante Cloud 第三方系统社会化登录基于
JustAuth实现,所以JustAuth支持的第三方系统,Dante Cloud 均支持。
在 Dante Cloud 中的示例配置方式如下:
herodotus:
assistant:
access:
justauth:
enabled: true
configs:
GITEE:
client-id: 7c1623d76f3909757912338688cae8a061e241b56070face6d54114eb61
client-secret: 8c343cad9ca732d54242f002d254239e17b68cab11c1d506a57822be
redirect-uri: http://aw255fkfqy5m.ngrok.xiaomiqiu123.top/social/oauth2/callback/GITEE
OSCHINA:
client-id: 7c1623d76f3909757912338688cae8a061e241b56070face6d54114eb61
client-secret: 8c343cad9ca732d54242f002d254239e17b68cab11c1d506a57822be
redirect-uri: http://192.168.101.10:8847/herodotus-cloud-uaa/oauth/social/giteeDante Cloud 会根据 yaml 中已经配置的第三方系统信息,在前端动态显示可用的第三登录信息,如下图所示。

注意
- 第一次使用第三方系统社会化登录 Dante Cloud,会首先进行注册。根据第三方系统提供的信息,动态生成用户信息以便后续登录系统
- 第三方系统社会化登录,也是采用自定义扩展 Spring Authorization Server 认证模式实现,并且与现有认证模式统一。登录时,统一采用
/oauth2/token接口获取 Token, - 需要为客户端配置
social_credentials认证模式,才允许该客户端使用手机验证码登录 - 因为涉及到自动注册的过程,所以需要需要为该类型的登录分配
默认角色,以便登录后有可以操作的内容。参见:【设置默认角色】 - 因为不同的系统登录时涉及的参数会有较大差异,Dante Cloud 仅详细调试了部分,如果您用的登陆方式参数有误,可以修改前端工程中的
SocialSignInCallback.vue添加或调整参数
[四]内置授权码模式登录
为了向用户展示更多的 OAuth2 登录方式,在 Dante Cloud 前端界面中,除了常规的 密码 模式外,还增加了 授权 模式。授权码模式是 OAuth 2.1 协议中,主推的登录模式。如下图所示:

提示
授权码模式其中一个重要的参数就是 redirect_url。在 Dante Cloud 数据初始化脚本中,默认写入的 redirect_url 是作者本地地址。您在部署完成之后,如果需要使用授权码登录模式,就需要修改 redirect_url。
需要以下步骤:
- 修改后端前端对应客户端对应的
redirect_url,可以通过界面,在 【应用管理】 中进行修改,或者直接修改数据库。(注意:直接修改数据库,因为缓存的原因不会直接生效,要么清空缓存重新重启应用,要么等待缓存失效) - 修改前端配置
VITE_OAUTH2_REDIRECT_URI
[五]通行密钥登录(Passkey)(企业版)
通行密钥 Passkey 是一种新型的 无密码登录 技术,旨在提高在线账户的安全性并简化登录流程。它利用非对称加密技术,通过公钥和私钥对用户身份进行验证,避免了传统密码的使用。
提示
如果您最近两年使用过 Github,那么就会知道现在 Github 大部分登录或者验证的方式都是使用 Passkey
通行密钥 Passkey 登录方式与其它登录方式不同,使用通行密钥 Passkey之前,首先要成功登录系统,然后在系统中注册通行密钥 Passkey之后才能使用。
在 Dante Cloud 中,首先要登录系统,然后在个人账号页面中【注册通行密钥】,如下图所示:

注册比较简单,只需要输入一个标签名称即可,用于区分具体的注册源。

输入完同行密钥的标签后,就会调用当前系统(设备)支持的登录方式。作者使用的是 Windows 系统,同时配置了 Pin 登录方式,所以就会弹出 Pin 输入框,用于验证是否有本地设备登录权限。

验证通过后,系统就会记录当前设备的登录信息,之后就可以使用通行密钥 Passkey 登录 Dante Cloud。

注意
- 通行密钥
Passkey使用有其自身的限制,仅能在https或者localhost使用。如果你将系统配置为公网访问,但是访问协议为http也是无法使用的。 - Dante Cloud 通行密钥
Passkey,也是采用自定义扩展 Spring Authorization Server 认证模式实现,并且与现有认证模式统一。登录时,统一采用/oauth2/token接口获取 Token, - 需要为客户端配置
webauthn_credentials认证模式,才允许该客户端使用手机验证码登录
