有什么方法可以在 swift ios 应用程序中忘记 AzureAD MSAL 中的登录帐户?
Is there any way to Forget signed-in account in AzureAD MSAL in swift ios app?
我正在尝试注销用户,当我尝试重新登录时,它会在不输入密码的情况下获取之前的用户凭据。
当用户在 MSAL 中注销时,有什么方法可以清除凭据 swift?
简短回答:在 iOS 由于所选技术的限制,截至 2019 年 5 月 30 日无法执行此操作。
您可以在以下位置阅读更多信息:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/589
并遵循功能请求:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/425
让参数 = MSALInteractiveTokenParameters(范围:kScopes)
parameters.promptType = MSALPromptType.login
将标志保留为 .login,以便它始终要求用户输入凭据。
这只是临时解决方案。
您也可以将此代码用于 iOS 13 或以下。通过更改 promptType 枚举,我们可以处理 WebView 中的登录行为。
func acquireTokenInteractively() -> Single<(String, String)> {
return Single<(String, String)>.create { [kScope] observer in
guard let applicationContext = self.applicationContext else {
observer(.error(Errors.unknown))
return Disposables.create()
}
let parameters = MSALInteractiveTokenParameters(scopes: kScope, webviewParameters: MSALWebviewParameters(parentViewController: UIApplication.shared.keyWindow!.rootViewController!))
parameters.promptType = .login //Change it based on ur requirement e.g. .selectAccount, .consent, .promptIfNecessary
applicationContext.acquireToken(with: parameters) { (result, error) in
if let error = error {
NSLoggerSwift.Logger.shared.log(.custom("OutlookLogin"), .error, "\u{274C} Could not acquire token: \(error.localizedDescription)")
observer(.error(Errors.badToken))
}
guard let result = result else {
observer(.error(Errors.badToken))
return
}
observer(.success((result.accessToken, result.account.username ?? "")))
}
return Disposables.create()
}
}
您需要设置
parameters.promptType = .selectAccount
然后用户可以通过单击...注销,然后 select 注销
我正在尝试注销用户,当我尝试重新登录时,它会在不输入密码的情况下获取之前的用户凭据。 当用户在 MSAL 中注销时,有什么方法可以清除凭据 swift?
简短回答:在 iOS 由于所选技术的限制,截至 2019 年 5 月 30 日无法执行此操作。
您可以在以下位置阅读更多信息:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/589
并遵循功能请求:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/425
让参数 = MSALInteractiveTokenParameters(范围:kScopes) parameters.promptType = MSALPromptType.login
将标志保留为 .login,以便它始终要求用户输入凭据。
这只是临时解决方案。
您也可以将此代码用于 iOS 13 或以下。通过更改 promptType 枚举,我们可以处理 WebView 中的登录行为。
func acquireTokenInteractively() -> Single<(String, String)> {
return Single<(String, String)>.create { [kScope] observer in
guard let applicationContext = self.applicationContext else {
observer(.error(Errors.unknown))
return Disposables.create()
}
let parameters = MSALInteractiveTokenParameters(scopes: kScope, webviewParameters: MSALWebviewParameters(parentViewController: UIApplication.shared.keyWindow!.rootViewController!))
parameters.promptType = .login //Change it based on ur requirement e.g. .selectAccount, .consent, .promptIfNecessary
applicationContext.acquireToken(with: parameters) { (result, error) in
if let error = error {
NSLoggerSwift.Logger.shared.log(.custom("OutlookLogin"), .error, "\u{274C} Could not acquire token: \(error.localizedDescription)")
observer(.error(Errors.badToken))
}
guard let result = result else {
observer(.error(Errors.badToken))
return
}
observer(.success((result.accessToken, result.account.username ?? "")))
}
return Disposables.create()
}
}
您需要设置
parameters.promptType = .selectAccount
然后用户可以通过单击...注销,然后 select 注销