簡體   English   中英

OAuth2 - 移動應用重定向問題,停留在瀏覽器中

[英]OAuth2 - mobile app redirection issue, stays in browser

我知道存在類似的線程,但我找不到我的用例的解決方案。

我正在嘗試從使用 Flutter 制作的移動應用程序中使用 OAuth2 進行身份驗證。 作為示例,我將展示 Android 案例。

我提供的重定向 url 必須以 http(s) 開頭,否則身份提供者會拒絕它。 我在我的 AndroidManifest.xml 中添加了以下活動:

<activity android:name="com.linusu.flutter_web_auth.CallbackActivity">
        <intent-filter android:label="flutter_web_auth" android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" android:host="my-app" />
        </intent-filter>
    </activity>

我正在使用 lib oauth2_client 發出請求。

var myOAuth2Client = new MyOAuth2Client(redirectUri: "http://my-app", customUriScheme: "http");
AccessTokenResponse tknResp = await myOAuth2Client.getTokenWithAuthCodeFlow(
    clientId: 'xxxxxxxxxxxxxx',
    clientSecret: 'xxxxxxxxxxxxxx',
    scopes: ['the.profile']).catchError((onError) {
  print("Error $onError");
});

有了這個,我很好地重定向到瀏覽器中的身份提供者登錄頁面。 使用憑據登錄后,我不會被重定向到我的應用程序。 相反,我被重定向到瀏覽器中的無效 url。 請注意,如果我用我的應用程序而不是瀏覽器強制打開 url,它運行良好。

我已閱讀有關 Android 應用程序鏈接的信息,但我知道它需要在服務器端進行編輯,而我無權訪問(這里的目標是擁有一個獨立的移動應用程序身份驗證)。

有人可以指導我如何重定向到我的應用程序嗎? (如果這是不可能的並且需要我身邊的服務器,那么流程是什么?)謝謝::)

如果您想使用 https 重定向 URI,那么您必須使用應用鏈接才能返回應用。 正確處理是一個棘手的流程。

有一個眾所周知的問題,您需要用戶手勢才能收到響應並避免您描述的問題。

一種可能的快速解決方案是將授權服務器配置為在每次用戶登錄后顯示同意屏幕,以充當用戶手勢。

有一個我的代碼示例,您可以在模擬器上運行它,它有一些指向博客文章的鏈接,這些文章更詳細地解釋了棘手的問題:

Android 聲稱的 HTTPS 方案代碼示例

雖然它是用 Kotlin 編寫的,但您可能會發現在 Flutter 中更難獲得移動安全性。

我也有同樣的問題。 我嘗試過不同的包,不同的例子,但結果總是一樣的。 登錄時,用戶和密碼字段被清空,但不會返回到應用程序。 我們使用身份服務器 4。

非常感謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM