feat: 统一 Commilitia Drop 全客户端命名与分发
This commit is contained in:
@@ -135,7 +135,7 @@ final class AuthManager
|
||||
let verifier = PKCE.randomToken(64)
|
||||
let challenge = PKCE.challenge(for: verifier)
|
||||
let state = PKCE.randomToken(24)
|
||||
let redirectURI = "cdrop://auth-callback"
|
||||
let redirectURI = "commilitia-drop://auth-callback"
|
||||
|
||||
var comp = URLComponents(string: cfg.brokerURL.trimmingTrailingSlash() + "/device/authorize")!
|
||||
comp.queryItems = [
|
||||
@@ -144,13 +144,13 @@ final class AuthManager
|
||||
URLQueryItem(name: "state", value: state),
|
||||
URLQueryItem(name: "code_challenge", value: challenge),
|
||||
URLQueryItem(name: "code_challenge_method", value: "S256"),
|
||||
URLQueryItem(name: "description", value: "Commilitia Drop iOS"),
|
||||
URLQueryItem(name: "description", value: "Commilitia Drop"),
|
||||
]
|
||||
guard let authURL = comp.url else { throw BrokerLoginError.incompleteConfig }
|
||||
|
||||
let flow = BrokerAuthFlow()
|
||||
brokerFlow = flow
|
||||
let callback = try await flow.run(url: authURL, callbackScheme: "cdrop")
|
||||
let callback = try await flow.run(url: authURL, callbackScheme: "commilitia-drop")
|
||||
brokerFlow = nil
|
||||
if gen != loginGeneration { return }
|
||||
|
||||
|
||||
@@ -8,13 +8,15 @@ import AppKit
|
||||
#endif
|
||||
|
||||
// 应用内 Broker 登录(device-authorization + PKCE,对齐桌面 desktop/platform/oauth.go)。iOS 无法
|
||||
// 跑 loopback 监听,故用 ASWebAuthenticationSession + 自定义 scheme 回调(cdrop://auth-callback):
|
||||
// 1. GET {broker}/device/authorize?app=cdrop&redirect_uri=cdrop://auth-callback&state&code_challenge&S256
|
||||
// 2. 用户在 broker SSO 授权 → 回调 cdrop://auth-callback?code=..&state=..
|
||||
// 跑 loopback 监听,故用 ASWebAuthenticationSession + 自定义 scheme 回调
|
||||
// (commilitia-drop://auth-callback):
|
||||
// 1. GET {broker}/device/authorize?app=commilitia-drop&redirect_uri=commilitia-drop://auth-callback&...
|
||||
// 2. 用户在 broker SSO 授权 → 回调 commilitia-drop://auth-callback?code=..&state=..
|
||||
// 3. POST {broker}/device/token {code, code_verifier, redirect_uri} → bootstrap 机器令牌
|
||||
// 4. POST {api}/api/auth/device-session(Bearer bootstrap)→ cdrop 设备会话(带真名 / device_id)
|
||||
// 这样手机上直接输账号登录,无需另一台设备扫码批准。
|
||||
// 前置:broker 须为 cdrop 应用注册 redirect_uri cdrop://auth-callback(同桌面 loopback 须注册)。
|
||||
// 前置:broker 须为 Commilitia Drop 应用注册 redirect_uri
|
||||
// commilitia-drop://auth-callback(同桌面 loopback 须注册)。
|
||||
|
||||
enum BrokerLoginError: Error
|
||||
{
|
||||
@@ -35,7 +37,8 @@ final class BrokerAuthFlow: NSObject, ASWebAuthenticationPresentationContextProv
|
||||
{
|
||||
private var session: ASWebAuthenticationSession?
|
||||
|
||||
// 打开授权页,等回调 URL(cdrop://auth-callback?code=..&state=..)。用户取消 / 失败抛错。
|
||||
// 打开授权页,等回调 URL(commilitia-drop://auth-callback?code=..&state=..)。
|
||||
// 用户取消 / 失败抛错。
|
||||
func run(url: URL, callbackScheme: String) async throws -> URL
|
||||
{
|
||||
try await withCheckedThrowingContinuation
|
||||
|
||||
Reference in New Issue
Block a user