AppAuth-iOS не работает с использованием OpenID 2.0 и Forgerock
Я пытаюсь использовать эту библиотеку (AppAuth-iOS) для аутентификации через Forgerock с использованием аутентификации OpenID 2.0.
Когда я запускаю этот пример приложения, выбирая "Авторизовать авто", мне удается аутентифицировать пользователя в Forgerock, но затем я получаю следующую ошибку:
Глядя на ошибку отладки, он говорит следующее:
Ошибка домена =org.openid.appauth.general Code=-4 \"(null)\"
Это метод, который он вызывается (credit: метод взят из примера кода приложения, который я связал выше):
@IBAction func authWithAutoCodeExchange(_ sender: Any) {
let issuer = URL(string: kIssuer)
let redirectURI = URL(string: kRedirectURI)
logMessage(format: "Fetching configuration for issuer: %@", issuer!.absoluteString)
// discovers endpoints
OIDAuthorizationService.discoverConfiguration(forIssuer: issuer!, completion: { (config, error) in
if config == nil {
self.logMessage(format: "Error retrieving discovery document: %@", error!.localizedDescription)
self.authState = nil
return
}
self.logMessage(format: "Got configuration: %@", config!.description)
// builds authentication request
let request = OIDAuthorizationRequest(configuration: config!, clientId: kClientID, scopes: [OIDScopeOpenID], redirectURL: redirectURI!, responseType: OIDResponseTypeCode, additionalParameters: nil)
// performs authentication request
let appDelegate = UIApplication.shared.delegate as! AppDelegate
self.logMessage(format: "Initiating authorization request with scope: %@", request.scope!)
appDelegate.currentAuthFlow = OIDAuthState.authState(byPresenting: request, presenting: self, callback: { (authState, error) in
if authState != nil {
self.authState = authState
self.logMessage(format: "Got authorization tokens. Access token: %@", (authState?.lastTokenResponse?.accessToken)!)
} else {
self.authState = nil
self.logMessage(format: "Authorization error: %@", error!.localizedDescription)
}
})
})
}
Есть идеи, является ли это ошибкой клиента или ошибкой конфигурации на стороне Forgerock?