We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
如题,经测试该问题仅在用户邮箱存在大写字母的情况下出现。
通过 authenticate 获得的 accessToken 是可以通过校验的,但是通过 refresh 获得的 accessToken 无法通过校验。
该问题会导致,拥有多个角色的账户,通过邮箱登录的情况下,无法进入服务器(因为通过邮箱登录时,启动器没有账户内角色信息,无法直接指定要登录的角色,必须先 authenticate 拿到 availableProfiles,再通过 refresh 时指定 selectedProfile 来选择角色,然后就会得到一个无法通过校验的 accessToken,在 join 的时候就会直接返回 ForbiddenOperationException)。
导致该问题的原因是,在处理用户刷新 accessToken 时,通过计算用户邮箱的 UUID v5 作为 JWT 的 sub 声明时,将用户邮箱转为了小写字母:
blessing-skin-plugins/plugins/yggdrasil-api/src/Controllers/AuthController.php
Lines 122 to 123 in aa54464
而在处理用户登录和验证 accessToken 有效性时,计算用户邮箱的 UUID v5 时,使用的均是用户邮箱原样:
Lines 26 to 30 in aa54464
blessing-skin-plugins/plugins/yggdrasil-api/src/Models/Token.php
Lines 31 to 34 in aa54464
导致 JWT 的 sub 声明验证失败,从而导致 accessToken 验证失败。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
如题,经测试该问题仅在用户邮箱存在大写字母的情况下出现。
通过 authenticate 获得的 accessToken 是可以通过校验的,但是通过 refresh 获得的 accessToken 无法通过校验。
该问题会导致,拥有多个角色的账户,通过邮箱登录的情况下,无法进入服务器(因为通过邮箱登录时,启动器没有账户内角色信息,无法直接指定要登录的角色,必须先 authenticate 拿到 availableProfiles,再通过 refresh 时指定 selectedProfile 来选择角色,然后就会得到一个无法通过校验的 accessToken,在 join 的时候就会直接返回 ForbiddenOperationException)。
导致该问题的原因是,在处理用户刷新 accessToken 时,通过计算用户邮箱的 UUID v5 作为 JWT 的 sub 声明时,将用户邮箱转为了小写字母:
blessing-skin-plugins/plugins/yggdrasil-api/src/Controllers/AuthController.php
Lines 122 to 123 in aa54464
而在处理用户登录和验证 accessToken 有效性时,计算用户邮箱的 UUID v5 时,使用的均是用户邮箱原样:
blessing-skin-plugins/plugins/yggdrasil-api/src/Controllers/AuthController.php
Lines 26 to 30 in aa54464
blessing-skin-plugins/plugins/yggdrasil-api/src/Models/Token.php
Lines 31 to 34 in aa54464
导致 JWT 的 sub 声明验证失败,从而导致 accessToken 验证失败。
The text was updated successfully, but these errors were encountered: