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? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in 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: