我们已经能够成功地将MSAL iOS框架(0.4.2)添加到我们的应用程序中,但是由于正确的授权传递到了应用程序中的所有Web视图时遇到了问题。具体来说,我们使用MSAL Framework作为应用程序的初始登录点,然后尝试加载与我们的Azure AD(Sharepoint等)相关的其他网页。使用该框架成功成功登录后,这些网页上会显示另一个登录提示。这次,应用程序知道用户有时已在设备/应用程序上登录了Azure AD,并显示了用于登录的帐户名,但再次请求了密码。为什么没有任何理由使MSAL Framework似乎没有将Authorization部分传递给所有应用程序Web视图?
我们已将框架配置为将WKWebView
用于本地浏览器而不是系统浏览器。以及使用框架中的默认WKWebView和应用程序中的“自定义”进行测试。我们还尝试传递具有共享WKProcessPool
的自定义Web视图。
我们已经在Java / 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.")
}
}
答案 0 :(得分:0)
我们需要为MSAL使用正确的webviewtype以及您要打开以进行Cookie共享的链接,请查看此-Reuse access token from MSAL in web view