Проблема входа в систему ASWebAuthentication и SFAuthentication после выхода из системы на iOS 11 и iOS 12, не удается сделать сеанс недействительным

Я использую ASWebAuthentication and SFAuthenticationдля аутентификации на сервере OAuth2 с grant_type : authorization_code.

Все работает отлично, кроме:

  1. пользователь успешно вошел в систему
  2. Выйти через revoking access token and refresh token with status code :200
  3. Проверено, что отзыв работает <------
  4. Пользовательская пресса login again а также opens ASWebAuthentication or SFAuthentication according the iOS версия и просто goes directly in the app как будто сеанс подтверждает, что токены каким-то образом действительны.
  5. В iOS 13 ASWebAuthentication обеспечивает prefersEphemeralWebBrowserSession = true который решает проблему, но для iOS 11/12 похоже, что я ничего не могу сделать (за исключением того, что проблема, вероятно, связана с BackEnd)

Когда я вхожу в систему, я передаю параметры prompt:login но все равно это не помогает.

Вопросы

  1. Есть ли что-то, что я могу сделать, чтобы аннулировать сеанс ASWebAuthentication и SFAuthentication на iOS 11/12, аналогично iOS 13? prefersEphemeralWebBrowserSession? (Я чего-то не нашел в документации. Apple ничего не разрешает)
  2. Это проблема, которую можно решить в интерфейсе (iOS), или это проблема в серверной части?

Спасибо

Предоставление кода только для документации

 print("Auth-Login : Process: Authenticate user")
    let state = String().createState(length: 4)
    let codeVerifier = String().createCodeVerifier()
    let codeChallenge = codeVerifier.pkceEncode.base64UriEncode
    let parameters = ["state=\(state)", "code_challenge=\(codeChallenge)"]
    let url = createUrl(parameters: parameters)
    guard let authURL = url else { return }
    DispatchQueue.main.async {
        self.delegate?.removeLoader()
        if #available(iOS 12.0, *) {
            print("Auth-Login : Process: Run ASWebAuthenticationSession")

            self.webAuthSession = ASWebAuthenticationSession(url: authURL, callbackURLScheme: "no.bilkollektivet.app") { (callbackUrl, error) in
                print(callbackUrl)
                if let error = error {
                    completionHandler(nil, nil, error)
                } else {
                    let result = self.getCodeFromCallbackUrl(url: callbackUrl, state: state)
                    completionHandler(result.code, codeVerifier, result.error)
                }
            }
            if #available(iOS 13.0, *) {
                self.webAuthSession.presentationContextProvider = self
                self.webAuthSession.prefersEphemeralWebBrowserSession = true
            }

            self.webAuthSession.start()
        } else {
            print("Auth-Login : Process: Run SFAuthenticationSession")

            self.sfAuthSession = SFAuthenticationSession(url: authURL, callbackURLScheme: "no.bilkollektivet.app") { (callbackUrl, error) in
                if let error = error {
                    completionHandler(nil, nil, error)
                } else {
                    let result = self.getCodeFromCallbackUrl(url: callbackUrl, state: state)
                    completionHandler(result.code, codeVerifier, result.error)
                }
            }

            self.sfAuthSession.start()
        }
    }

0 ответов