gpt4 book ai didi

ios - 带有 MSAL 的 native iOS 应用程序需要第二次登录 Webview 才能到 Sharepoint Online

转载 作者:行者123 更新时间:2023-12-01 16:21:56 30 4
gpt4 key购买 nike

我们已经能够成功地将 MSAL iOS 框架 (0.4.2) 添加到我们的应用程序中,但是在将正确授权传递给应用程序中的所有 Web View 时遇到了问题。具体来说,我们使用 MSAL 框架作为应用程序的初始登录点,然后尝试加载与我们的 Azure AD 相关联的其他网页(Sharepoint 等)。在使用框架初始成功登录后,我们会在这些网页上看到另一个登录提示。这次应用知道用户在某个时间点已在设备/应用上登录 Azure AD,并显示用于登录的帐户名,但再次请求密码。 MSAL 框架似乎没有将授权部分传递给所有应用程序 Web View 是否有任何原因?

我们已将框架配置为使用 WKWebView对于本地浏览器,而不是使用系统浏览器。以及使用框架中的默认 WKWebView 和我们应用程序中的自定义进行测试。我们还尝试传递具有共享 WKProcessPool 的自定义 Web View 。 .

我们已经在 J​​ava/Kotlin Android 应用程序以及适用于 Android 和 iOS 的 Xamarin 应用程序中获得了此功能。

我们已尝试启用 MSAL 日志记录,但这样做会导致应用程序在关闭 MSAL WKWebView 时崩溃.

open func initMSAL() throws {

guard ClientID != nil , ClientID != "" else {
NSLog("No ClientID Provided. Please Provide a ClientID")
return
}

var msalauthority: MSALAuthority? = nil;

let url:URL = URL(string: AUTHORITY)!

msalauthority = try MSALAADAuthority(url: url)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: ClientID!, redirectUri: REDIRECTURI, authority: msalauthority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
MSALGlobalConfig.defaultWebviewType = .wkWebView
}


open func acquireTokenInteractively() {

guard let applicationContext = self.applicationContext else { return }

guard self.Scopes.count > 0 else {
NSLog("No Scopes provided. Please provide Scopes.")
return
}

let parameters = MSALInteractiveTokenParameters(scopes: self.Scopes)
NSLog("WebView Value Type: %i", parameters.webviewType.rawValue );
applicationContext.acquireToken(with: parameters) { (result, error) in

if let error = error {
NSLog("Could not acquire token: \(error)")
self.delegate?.ProcessAuthResults(false, "Could not acquire token: \(error)")
return
}

guard let result = result else {

NSLog("Could not acquire token: No result returned")
self.delegate?.ProcessAuthResults(false, "Could not acquire token: No result returned")
return
}

self.AccessToken = result.accessToken
NSLog("Access token is \(self.AccessToken)")
self.delegate?.ProcessAuthResults(true, "Access Token received.")
}
}

最佳答案

我们需要为 MSAL 使用正确的 webviewtype 组合和您尝试为 cookie 共享打开的链接,请查看 - Reuse access token from MSAL in web view

关于ios - 带有 MSAL 的 native iOS 应用程序需要第二次登录 Webview 才能到 Sharepoint Online,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56529915/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com