yushijinhun / authlib-injector

Build your own Minecraft authentication system.
https://authlib-injector.yushi.moe
GNU Affero General Public License v3.0
752 stars 68 forks source link

[Proposal] External authentication flow #163

Open mochaaP opened 2 years ago

mochaaP commented 2 years ago

As discussed in https://t.me/blessing_skin/176521

Scenario

Issues

Workarounds

tnqzh123 commented 2 years ago

Client calls refresh to validate token and do remaining steps as usual

Yggdrasil 有专门的 validate 接口,用来检查 accessToken 可用性的,doc

  • Reimplementing it again in our specs e.g. Blessing Skin Server already have a great OAuth implementation

BS 自带的那个 OAuth 实现可能不是很适用于这个 proposal:它仍然需要 OAuth 应用开发者在皮肤站内创建应用(填写应用名称和 callback URL),然而你不可能指望启动器作者能在所有皮肤站都创建一个应用;而且 BS 的 OAuth 也不会返回可以用于 Yggdrasil 登录的 accessToken,也没有实现多角色选择之类的操作(当然这步可以考虑丢给启动器)

mochaaP commented 2 years ago

edited

FLYEMOJ1 commented 7 months ago

Followed by Group: "LittleSkin Community Admins" Content:


1. 启动器使用 WebView2 或打包一套cef(认真的吗?)打开验证界面,并通过注册一个 scheme 接受内置浏览器的回调
2. 启动器打开系统浏览器,通过本地开启 websocket server 并在 URL 中传入 ws port 的方式,让浏览器通过 ws 投递登录消息
3. 提案中方案,但考虑到启动器可能是 portable 的,所以需要在启动器每次开启时注册一次 scheme 
FLYEMOJ1 commented 7 months ago

Followed by Group: "LittleSkin Community Admins" Content:


1. 启动器使用 WebView2 或打包一套cef(认真的吗?)打开验证界面,并通过注册一个 scheme 接受内置浏览器的回调
2. 启动器打开系统浏览器,通过本地开启 websocket server 并在 URL 中传入 ws port 的方式,让浏览器通过 ws 投递登录消息
3. 提案中方案,但考虑到启动器可能是 portable 的,所以需要在启动器每次开启时注册一次 scheme 

个人觉得第二条启动系统浏览器这个方案可行 只因其他启动器验证Microsoft正版也为该方案。