簡體   English   中英

Xamarin MSAL Azure AD B2C 登錄顯示瀏覽器而不是 Web 視圖

[英]Xamarin MSAL Azure AD B2C Login shows browser instead of web view

我目前正在將 Xamarin/MSAL 與 Azure AD B2C 一起使用。

它可以毫無問題地工作。

但是,當調用 login 方法時,它會顯示瀏覽器而不是 Web 視圖,后者具有顯示 URL 的地址欄。 根據文檔,它應該顯示 Web 視圖(客戶端和服務器流)?

要使用此代碼調用登錄即時消息:

 AuthenticationResult ar = await App.PCA.AcquireTokenAsync(App.Scopes, GetUserByPolicy(App.PCA.Users, App.PolicySignUpSignIn), UIBehavior.ForceLogin, "ui_locales=sv", App.UiParent);

有沒有辦法強制網頁視圖而不是瀏覽器?

正如您所發現的,您無法將登錄請求強制發送到嵌入式用戶代理,但這樣做是有充分理由的。

觀察到的行為與IETF 的 OAuth 2.0 for Native Apps 的最佳當前實踐一致:

“……目前最好的做法是在外部用戶代理(通常是瀏覽器)中執行 OAuth 授權請求,而不是在嵌入式用戶代理(例如使用 Web 視圖實現的)中執行。”

它還說:

“鼓勵用戶在沒有瀏覽器通常具有的地址欄和可見證書驗證功能的嵌入式用戶代理中輸入憑據使用戶無法知道他們是否正在登錄合法站點;即使他們登錄了,它也會訓練他們認為可以在不首先驗證站點的情況下輸入憑據。”

授權服務器(例如 Google)在嵌入式用戶代理中阻止 OAuth 授權請求,“對於存在可行替代方案的平台上的所有 OAuth 客戶端”。

從我現在看到的 MSAL 支持嵌入式 webviews 如下:

await App.AuthenticationClient
                    .AcquireTokenInteractive(GlobalConstants.AzureB2C.Scopes)
                    .WithPrompt(Prompt.SelectAccount)
                    .WithUseEmbeddedWebView(true)
                    .WithParentActivityOrWindow(App.UIParent)
                    .ExecuteAsync().ConfigureAwait(false);

WithUseEmbeddedWebView接受布爾值的地方

目前,MSAL 中的 Xamarin Android 只能啟動 Chrome 或 Chrome 自定義選項卡。 我們目前正致力於在 MSAL 中包含嵌入式 webview 支持。

暫無
暫無

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

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